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();
}
}
...
}