1
0
mirror of https://github.com/Pomax/BezierInfo-2.git synced 2025-08-26 09:44:32 +02:00
Files
2020-09-13 13:18:15 -07:00

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`);
}