mirror of
https://github.com/Pomax/BezierInfo-2.git
synced 2025-08-26 09:44:32 +02:00
65 lines
1.4 KiB
JavaScript
65 lines
1.4 KiB
JavaScript
let curve, r, kappa = 0.5519768352769461;
|
|
|
|
setup() {
|
|
r = 100;
|
|
curve = new Bezier(this, [
|
|
{ x: r, y: 0 },
|
|
{ x: r, y: kappa * r },
|
|
{ x: kappa * r, y: r},
|
|
{ x: 0, y: r }
|
|
]);
|
|
}
|
|
|
|
draw() {
|
|
clear();
|
|
translate(this.width/2, this.height/2);
|
|
const w = this.width, h = this.height;
|
|
|
|
setStroke(`lightgrey`);
|
|
line(0,-h,0,h);
|
|
line(-w,0,w,0);
|
|
|
|
setStroke(`black`);
|
|
line(-r,0,r,0);
|
|
line(0,-r,0,r);
|
|
|
|
setColor(`black`);
|
|
text(`r = ${r}`, r/2, 15, CENTER);
|
|
|
|
setColor(`red`);
|
|
curve.drawSkeleton(`red`);
|
|
curve.points.forEach(p => {
|
|
circle(p.x, p.y, 2);
|
|
text(`(${p.x},${p.y})`, p.x+5, p.y+15);
|
|
});
|
|
curve.drawCurve();
|
|
|
|
curve.points.forEach(p => p.y = -p.y);
|
|
curve.drawCurve(`#CC00CC40`);
|
|
|
|
setColor(`#CC00CC`);
|
|
line(r, 0, r, -kappa * r);
|
|
circle(r, -kappa * r, 2);
|
|
text(`reflected`, r + 7, -kappa * r + 3, LEFT);
|
|
|
|
setColor(`#CC00CC40`);
|
|
line(0, -r, kappa * r, -r);
|
|
|
|
curve.points.forEach(p => {
|
|
p.x = -p.x;
|
|
p.y = -p.y;
|
|
});
|
|
curve.drawCurve(`#0000CC40`);
|
|
|
|
setColor(`#0000CC`);
|
|
line(0, r, -kappa * r, r);
|
|
circle(-kappa * r, r, 2);
|
|
text(`reflected`, -kappa * r - 5, r + 3, RIGHT);
|
|
|
|
setColor(`#0000CC40`);
|
|
line(-r, 0, -r, kappa * r);
|
|
|
|
curve.points.forEach(p => p.y = -p.y);
|
|
curve.drawCurve(`#00000040`);
|
|
}
|