Hallo liebe Gemeinde,
könnte mir bitte mal jemand Hilfestellung geben wie ich am besten anfange meine alte Rechnung die ich mal in Swift geschriben habe für JavaScript zu bewerkstelligen? Das war mal für eine App aber da man ja um sie auch auf dem eigenen Telefon zu haben reichlich Geld bezahlen soll möchte ich sie gern als private Webseite umbauen. Daher suche ich jegliche Hilfe. Das ist der alte Code in Swift:
class Dachgeometrie {
var computationMode: ComputationMode = .traufhöVordachNeigung
// Eingabe der Profilmaße
var grundmaß = 0.0
var firsthöhe = 0.0
var traufhöhe = 0.0
var dachüberstand = 0.0
var dachneigung = 0.0
var okFußpfette= 0.0
var okFirstpfette = 0.0
// Holzabmessungen zur Berechnung
var sparrenhöhe = 0.18
var fußpfettenhöhe = 0.12
var fußpfettenbreite = 0.12
var firstpfettenbreite = 0.12
// Maße für die Herstellung des Dachstuhls / der Dachsparren
var klauentiefe = 0.03
var fußpfettenrücksprung = 0.0
var lotrechtesObholz = 0.0
var waagerechtesObholz = 0.0
var okKniestock = 0.0
var verkämmungZangen = 0.02
var zangenRücksprung = 0.0
var firstlaschenRücksprung = 0.0
var returnBaptismOfSolderToRectangular = 0.0
// Eigenschaften zur Berechnung der Werte
var raumhöheRohbau = 2.75
var sparrenbreite = 0.08
var zangenhöhe = 0.16
var zangenbreite = 0.08
var mittelpfettenhöhe = 0.22
var mittelpfettenbreite = 0.16
var firstpfettenhöhe = 0.12
var firstpfettenbreite = 0.12
var firstlaschenbreite = 0.04
// Eigenschaft für den Markierungswerte-Controller
// Dachtraufe senkrecht
var traufabschnittLotrecht = 0.0
var traufabschnittlotrechteinzelmaß = 0.0
var klauefußpfettemaßkette = 0.0
var klauefußpfetteeinzelmaß = 0.0
var klauefirstmaßkette = 0.0
var klauefirstpfetteeinzelmaß = 0.0
var klauemittelpfettemaßkette = 0.0
var klauemittelpfetteeinzelmaß = 0.0
var pliersOuterEdgeMiddlePurlin = 0.0
var pliersMiddlepurlinToOuterEdge = 0.0
var lengthRidgeFlap = 0.0
var bottomMiddlePurlin = 0.0
// Traufe senkrecht
var rechtwinkligklauefußpfettemaßkette = 0.0
var perpendicularklauemittelpfettemaßkette = 0.0
var perpendicularklauefirstmaßkette = 0.0
var perpendiculartraufabschnittLotrecht = 0.0
var perpendicularklauefußpfetteeinzelmaß = 0.0
var perpendicularklauemittelpfetteeinzelmaß = 0.0
var perpendicularklauefirstpfetteeinzelmaß = 0.0
var perpendiculartraufabschnittlotrechteinzelmaß = 0.0
// Berechnungen/ Formeln
// Keine Funktion, sondern eine berechnete Eigenschaft
// Ätsch! Doch eine Funktion! :-D
func updateProfilmaße() {
switch computationMode {
case .traufhöVordachNeigung:
firsthöhe = round((((grundmaß + dachüberstand) * tan(dachneigung * M_PI / 180)) + traufhöhe) / 0.001) * 0.001
okKniestock = round((dachüberstand * tan(dachneigung * M_PI / 180)) / 0.001) * 0.001
lotrechtesObholz = (sparrenhöhe - klauentiefe) / cos(dachneigung * M_PI / 180)
// okFußpfette
let a = round(((dachüberstand + fußpfettenrücksprung) * tan(dachneigung * M_PI / 180)) / 0.001) * 0.001
okFußpfette = round(((a - lotrechtesObholz) + traufhöhe) / 0.001) * 0.001
// okFirstpfette
let b = grundmaß - 0.5 * firstpfettenbreite + dachüberstand
let c = b * tan(dachneigung * M_PI / 180) - lotrechtesObholz + traufhöhe
okFirstpfette = round(c / 0.001) * 0.001
case .firsthöTraufhöVordach:
dachneigung = round(((atan((firsthöhe - traufhöhe) / (grundmaß + dachüberstand))) / M_PI * 180) / 0.1) * 0.1
okKniestock = round((dachüberstand * tan(dachneigung * M_PI / 180)) / 0.001) * 0.001
lotrechtesObholz = (sparrenhöhe - klauentiefe) / cos(dachneigung * M_PI / 180)
// okFußpfette
let a = round(((dachüberstand + fußpfettenrücksprung) * tan(dachneigung * M_PI / 180)) / 0.001) * 0.001
okFußpfette = round(((a - lotrechtesObholz) + traufhöhe) / 0.001) * 0.001
// okFirstpfette
let b = grundmaß - 0.5 * firstpfettenbreite + dachüberstand
let c = b * tan(dachneigung * M_PI / 180) - lotrechtesObholz + traufhöhe
okFirstpfette = round(c / 0.001) * 0.001
case .vordachNeigungOKFußpf:
lotrechtesObholz = (sparrenhöhe - klauentiefe) / cos(dachneigung * M_PI / 180)
firsthöhe = round((((grundmaß - fußpfettenrücksprung) * tan(dachneigung * M_PI / 180)) + okFußpfette + lotrechtesObholz) / 0.001) * 0.001
traufhöhe = round(((okFußpfette + lotrechtesObholz) - (dachüberstand + fußpfettenrücksprung) * tan(dachneigung * M_PI / 180)) / 0.001) * 0.001
// okFirstpfette
let a = grundmaß - 0.5 * firstpfettenbreite + dachüberstand
let b = a * tan(dachneigung * M_PI / 180) - lotrechtesObholz + traufhöhe
okFirstpfette = round(b / 0.001) * 0.001
}
// Berechnungen für MarkingValuesController
// Traufe lotrecht Maßkette
traufabschnittLotrecht = sqrt(pow((grundmaß + dachüberstand), 2.0) + pow((firsthöhe - traufhöhe), 2.0))
klauefußpfettemaßkette = sqrt(pow((dachüberstand + fußpfettenrücksprung), 2.0) + pow((okFußpfette + lotrechtesObholz - traufhöhe), 2.0))
klauefirstmaßkette = sqrt(pow((grundmaß + dachüberstand - (0.5 * firstpfettenbreite)), 2.0) + pow((okFirstpfette + lotrechtesObholz - traufhöhe), 2.0))
let c = raumhöheRohbau + (zangenhöhe - verkämmungZangen) + mittelpfettenhöhe + lotrechtesObholz - traufhöhe
klauemittelpfettemaßkette = c / sin(dachneigung * M_PI / 180)
// Traufe lotrecht Einzelmaße
klauefußpfetteeinzelmaß = klauefußpfettemaßkette
traufabschnittlotrechteinzelmaß = traufabschnittLotrecht - klauefirstmaßkette
klauefirstpfetteeinzelmaß = traufabschnittLotrecht - traufabschnittlotrechteinzelmaß - klauemittelpfettemaßkette
klauemittelpfetteeinzelmaß = traufabschnittLotrecht - traufabschnittlotrechteinzelmaß - klauefirstpfetteeinzelmaß - klauefußpfetteeinzelmaß
// Traufe rechtwinklig Maßkette
rechtwinkligklauefußpfettemaßkette = klauefußpfettemaßkette - returnBaptismOfSolderToRectangular
rechtwinkligklauemittelpfettemaßkette = klauemittelpfettemaßkette - returnBaptismOfSolderToRectangular
rechtwinkligklauefirstmaßkette = klauefirstmaßkette - returnBaptismOfSolderToRectangular
rechtwinkligtraufabschnittLotrecht = traufabschnittLotrecht - returnBaptismOfSolderToRectangular
// Traufe rechtwinklig Einzelmaße
rechtwinkligklauefußpfetteeinzelmaß = rechtwinkligklauefußpfettemaßkette
rechtwinkligklauemittelpfetteeinzelmaß = klauemittelpfetteeinzelmaß
rechtwinkligklauefirstpfetteeinzelmaß = klauefirstpfetteeinzelmaß
rechtwinkligtraufabschnittlotrechteinzelmaß = traufabschnittlotrechteinzelmaß
// Zangen/ Firstlaschen/ Pfosten etc
zangeaußenkantemittelpfette = grundmaß + dachüberstand - (raumhöheRohbau + (zangenhöhe - verkämmungZangen) + mittelpfettenhöhe + lotrechtesObholz - traufhöhe)
zangemittelpfettezuraußenkante = ((mittelpfettenhöhe - verkämmungZangen) / tan(dachneigung * M_PI / 180)) + waagerechtesObholz - zangenRücksprung
ukmittelpfette = raumhöheRohbau + (zangenhöhe - verkämmungZangen)
längefirstlasche = (((firsthöhe - okFirstpfette + firstpfettenhöhe) / tan(dachneigung * M_PI / 180)) - firstlaschenRücksprung) * 2.0
// Berechnungen/ Zwischenrechnunge/ Maße die nicht auftauchen in den Views
waagerechtesObholz = lotrechtesObholz / tan(dachneigung * M_PI / 180)
zangenRücksprung = 0.02 / sin(dachneigung * M_PI / 180)
firstlaschenRücksprung = 0.01 / sin(dachneigung * M_PI / 180)
returnBaptismOfSolderToRectangular = sparrenhöhe / tan(dachneigung * M_PI / 180)
}
// Berechnungen für die Warnungen!!!
var überhangfußpfettenachinnen: Double {
return fußpfettenrücksprung + fußpfettenbreite
}
var drempel-sparren: Double {
return (fußpfettenhöhe - (klauentiefe / cos(dachneigung * M_PI / 180))) / tan(dachneigung * M_PI / 180)
}
var ukFirstlasche: Double {
return okFirstpfette - firstpfettenhöhe - firstlaschenhöhe
}
var okmittelpfette: Double {
return raumhöheRohbau + zangenhöhe - verkämmungZangen + mittelpfettenhöhe
}
var beta: Double {
return 90 - dachneigung
}
}
Danke schonmal für jegliche Hilfestellung!
LG Matze