UNPKG

frame.akima

Version:

A package for Akima interpolation

26 lines (18 loc) 1.29 kB
Die Funktion __createAkimaRadii__ generiert aus _points_ und _universeCenter_ einen Akima-Spline und liefert ein [x,y]-Feld mit den Koordinaten des Akima-Spline in äquidistanten Abständen zurück (abhängig von der gewünschten Anzahl von Punkten _nrRadii_) Algorithmus: 1) definiere Punkte in einem Array 2) ermittle [xMin, xMax] und [yMin, yMax] 3) ermittle den Mittelpunkt des PunkteArrays 4) sortiere die Punkte im Gegenuhrzeigersinn, beginnend bei 3:00 5) Funktion - transformiere die Punkte so, dass der Mittelpunkt im Ursprung liegt (und notiere das [x,y]-Offset) - generiere den Catmull-Rom-Spline - erzeuge aus dem Catmull-Rom-Spline ein neues Punkte-Array - sortiere die Punkte im Punkte-Array im Gegenuhrzeigersinn, beginnend bei 3:00 - ermittle den Mittelpunkt des PunkteArrays (dieses weicht vom Ursprung ab) 6) transformiere die Punkte so, dass der Mittelpunkt im Ursprung liegt (und notiere das [x,y]-Offset) Wie kann man den Punkt finden, an dem die Form beginnt (an dem der Wert y = 0 ist)? suche einen Winkel a1, dessen y-Wert negativ ist suche einen Winkel a2, dessen y-Wert positiv ist ermittle mittels Bisektionsverfahren einen Winkel c mit der Bedingung a1 < c < a2 ersetze a1 durch c, falls c negativ ist bzw. a2 durch c, falls c positiv ist