1
0
mirror of https://github.com/Pomax/BezierInfo-2.git synced 2025-09-30 18:19:04 +02:00

canonical

This commit is contained in:
Pomax
2020-08-21 15:32:49 -07:00
parent 8dce6aed6b
commit c90565f493
227 changed files with 1899 additions and 590 deletions

View File

@@ -4,10 +4,23 @@
* cubic Bezier curves.
*/
class Shape {
constructor(type, factor) {
constructor(type, factor, points = []) {
this.first = false;
this.segments = [];
this.addSegment(type, factor);
points.forEach((p) => this.vertex(p));
}
merge(other) {
if (!other.segments) {
other = { segments: [new Segment(Shape.POLYGON, undefined, other)] };
}
other.segments.forEach((s) => this.segments.push(s));
}
copy() {
const copy = new Shape(this.type, this.factor);
copy.first = this.first;
copy.segments = this.segments.map((s) => s.copy());
return copy;
}
addSegment(type, factor) {
this.currentSegment = new Segment(type, factor);
@@ -30,10 +43,15 @@ Shape.BEZIER = `Bezier`;
* A shape subpath
*/
class Segment {
constructor(type, factor) {
constructor(type, factor, points = []) {
this.type = type;
this.factor = factor;
this.points = [];
this.points = points;
}
copy() {
const copy = new Segment(this.type, this.factor);
copy.points = JSON.parse(JSON.stringify(this.points));
return copy;
}
add(p) {
this.points.push(p);