this.createPath = function(xObject) // Erzeuge Pfad { ... /* Eingabe Control- und Anchor-Points */ result = anchor1.inCircle(apx1, apy1+this.zeroY); // sens. Kreis für Ankerp. 1 (links) apx1 = result[1]; result = control1.inCircle(apx1+cpx1, apy1+cpy1+this.zeroY); // sens. Handle für Kontrolp. 1 (links) cpx1 = result[1] - apx1; // Kontrollpunkt wird mit Ankerpunkt verschoben cpy1 = result[2] - apy1 - this.zeroY; result = anchor2.inCircle(apx2, apy2+this.zeroY); // sens. Kreis für Ankerp. 2 (rechts) apx2 = result[1]; result = control2.inCircle(apx2+cpx2, apy2+cpy2+this.zeroY); // sens. Handle für Kontrolp. 1 (links) cpx2 = result[1] - apx2; // Kontrollpunkt wird mit Ankerpunkt verschoben cpy2 = result[2] - apy2 - this.zeroY; /* Approximation des Pfades */ for (n = 0; n < this.numberOfSamples+1; n++) { // Bezier-Funktionen tBezier = n/this.numberOfSamples; x[n] = apx1*pow((1-tBezier),3) + (apx1+cpx1)*3*tBezier*sq(1-tBezier) + (apx2+cpx2)*3*sq(tBezier)*(1-tBezier) + apx2*pow(tBezier,3); y[n] = apy1*pow((1-tBezier),3) + (apy1+cpy1)*3*tBezier*sq(1-tBezier) + (apy2+cpy2)*3*sq(tBezier)*(1-tBezier) + apy2*pow(tBezier,3); //console.log("n: "+n+" y(x): "+y[n]+" x["+n+"]: "+x[n]+" numberOfSamples: "+this.numberOfSamples); if (y[n] <= 0) { push(); fill('#aa0000'); textSize(25*normPixel); textAlign(CENTER); text("Achtung! M wird nagativ!", width/2, height/2); pop(); } } ... }