39 set(points[0], points[1],
40 points[2], points[3],
41 points[4], points[5],
42 points[6], points[7]);
43 return;
44 case 6:
45 set(points[0], points[1],
46 points[2], points[3],
47 points[4], points[5]);
48 return;
49 default:
50 throw new InternalError("Curves can only be cubic or quadratic");
51 }
52 }
53
54 void set(double x1, double y1,
55 double x2, double y2,
56 double x3, double y3,
57 double x4, double y4)
58 {
59 ax = 3.0d * (x2 - x3) + x4 - x1;
60 ay = 3.0d * (y2 - y3) + y4 - y1;
61 bx = 3.0d * (x1 - 2.0d * x2 + x3);
62 by = 3.0d * (y1 - 2.0d * y2 + y3);
63 cx = 3.0d * (x2 - x1);
64 cy = 3.0d * (y2 - y1);
65 dx = x1;
66 dy = y1;
67 dax = 3.0d * ax; day = 3.0d * ay;
68 dbx = 2.0d * bx; dby = 2.0d * by;
69 }
70
71 void set(double x1, double y1,
72 double x2, double y2,
73 double x3, double y3)
74 {
75 ax = 0.0d; ay = 0.0d;
76 bx = x1 - 2.0d * x2 + x3;
77 by = y1 - 2.0d * y2 + y3;
78 cx = 2.0d * (x2 - x1);
79 cy = 2.0d * (y2 - y1);
80 dx = x1;
81 dy = y1;
82 dax = 0.0d; day = 0.0d;
83 dbx = 2.0d * bx; dby = 2.0d * by;
84 }
85
86 double xat(double t) {
87 return t * (t * (t * ax + bx) + cx) + dx;
88 }
89 double yat(double t) {
90 return t * (t * (t * ay + by) + cy) + dy;
91 }
92
93 double dxat(double t) {
94 return t * (t * dax + dbx) + cx;
95 }
96
97 double dyat(double t) {
98 return t * (t * day + dby) + cy;
99 }
|
39 set(points[0], points[1],
40 points[2], points[3],
41 points[4], points[5],
42 points[6], points[7]);
43 return;
44 case 6:
45 set(points[0], points[1],
46 points[2], points[3],
47 points[4], points[5]);
48 return;
49 default:
50 throw new InternalError("Curves can only be cubic or quadratic");
51 }
52 }
53
54 void set(double x1, double y1,
55 double x2, double y2,
56 double x3, double y3,
57 double x4, double y4)
58 {
59 final double dx32 = 3.0d * (x3 - x2);
60 final double dy32 = 3.0d * (y3 - y2);
61 final double dx21 = 3.0d * (x2 - x1);
62 final double dy21 = 3.0d * (y2 - y1);
63 ax = (x4 - x1) - dx32;
64 ay = (y4 - y1) - dy32;
65 bx = (dx32 - dx21);
66 by = (dy32 - dy21);
67 cx = dx21;
68 cy = dy21;
69 dx = x1;
70 dy = y1;
71 dax = 3.0d * ax; day = 3.0d * ay;
72 dbx = 2.0d * bx; dby = 2.0d * by;
73 }
74
75 void set(double x1, double y1,
76 double x2, double y2,
77 double x3, double y3)
78 {
79 final double dx21 = (x2 - x1);
80 final double dy21 = (y2 - y1);
81 ax = 0.0d; ay = 0.0d;
82 bx = (x3 - x2) - dx21;
83 by = (y3 - y2) - dy21;
84 cx = 2.0d * dx21;
85 cy = 2.0d * dy21;
86 dx = x1;
87 dy = y1;
88 dax = 0.0d; day = 0.0d;
89 dbx = 2.0d * bx; dby = 2.0d * by;
90 }
91
92 double xat(double t) {
93 return t * (t * (t * ax + bx) + cx) + dx;
94 }
95 double yat(double t) {
96 return t * (t * (t * ay + by) + cy) + dy;
97 }
98
99 double dxat(double t) {
100 return t * (t * dax + dbx) + cx;
101 }
102
103 double dyat(double t) {
104 return t * (t * day + dby) + cy;
105 }
|