A package for Akima interpolation
npm install frame.akima
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