Home | History | Annotate | Download | only in tools

Lines Matching full:curve

119             var curve = test[curves];
120 var last = curve.length - (curve.length % 2 == 1 ? 1 : 0);
122 xmin = Math.min(xmin, curve[idx]);
123 xmax = Math.max(xmax, curve[idx]);
124 ymin = Math.min(ymin, curve[idx + 1]);
125 ymax = Math.max(ymax, curve[idx + 1]);
177 function dxy_at_t(curve, t) {
179 if (curve.length == 6) {
183 dxy.x = a * curve[0] + b * curve[2] + c * curve[4];
184 dxy.y = a * curve[1] + b * curve[3] + c * curve[5];
185 } else if (curve.length == 7) {
186 var p20x = curve[4] - curve[0];
187 var p20y = curve[5] - curve[1];
188 var p10xw = (curve[2] - curve[0]) * curve[6];
189 var p10yw = (curve[3] - curve[1]) * curve[6];
190 var coeff0x = curve[6] * p20x - p20x;
191 var coeff0y = curve[6] * p20y - p20y;
196 } else if (curve.length == 8) {
198 var a = curve[0];
199 var b = curve[2];
200 var c = curve[4];
201 var d = curve[6];
203 a = curve[1];
204 b = curve[3];
205 c = curve[5];
206 d = curve[7];
378 function ray_curve_intersect(startPt, endPt, curve) {
382 var len = (curve.length == 7 ? 6 : curve.length) / 2;
384 r[n] = (curve[n * 2 + 1] - startPt[1]) * adj - (curve[n * 2] - startPt[0]) * opp;
386 if (curve.length == 6) {
394 if (curve.length == 7) {
396 var B = r[1] * curve[6];
412 function x_at_t(curve, t) {
414 if (curve.length == 4) {
415 return one_t * curve[0] + t * curve[2];
419 if (curve.length == 6) {
420 return one_t2 * curve[0] + 2 * one_t * t * curve[2] + t2 * curve[4];
422 if (curve.length == 7) {
423 var numer = one_t2 * curve[0] + 2 * one_t * t * curve[2] * curve[6]
424 + t2 * curve[4];
425 var denom = one_t2 + 2 * one_t * t * curve[6]
433 return a * curve[0] + b * curve[2] + c * curve[4] + d * curve[6];
436 function y_at_t(curve, t) {
438 if (curve.length == 4) {
439 return one_t * curve[1] + t * curve[3];
443 if (curve.length == 6) {
444 return one_t2 * curve[1] + 2 * one_t * t * curve[3] + t2 * curve[5];
446 if (curve.length == 7) {
447 var numer = one_t2 * curve[1] + 2 * one_t * t * curve[3] * curve[6]
448 + t2 * curve[5];
449 var denom = one_t2 + 2 * one_t * t * curve[6]
457 return a * curve[1] + b * curve[3] + c * curve[5] + d * curve[7];
460 function drawPointAtT(curve) {
461 var x = x_at_t(curve, curveT);
462 var y = y_at_t(curve, curveT);
519 function curveClosestT(curve, x, y) {
524 var testX = x_at_t(curve, i / 16);
527 var testY = y_at_t(curve, i / 16);
551 function computeQuadPOW2(curve, tol) {
552 var a = curve[6] - 1;
554 var x = k * (curve[0] - 2 * curve[2] + curve[4]);
555 var y = k * (curve[1] - 2 * curve[3] + curve[5]);
572 function chop(curve, part1, part2) {
573 var w = curve[6];
575 part1[0] = curve[0];
576 part1[1] = curve[1];
577 part1[2] = (curve[0] + curve[2] * w) * scale;
578 part1[3] = (curve[1] + curve[3] * w) * scale;
579 part1[4] = part2[0] = (curve[0] + (curve[2] * w) * 2 + curve[4]) * scale * 0.5;
580 part1[5] = part2[1] = (curve[1] + (curve[3] * w) * 2 + curve[5]) * scale * 0.5;
581 part2[2] = (curve[2] * w + curve[4]) * scale;
582 part2[3] = (curve[3] * w + curve[5]) * scale;
583 part2[4] = curve[4];
584 part2[5] = curve[5];
588 function subdivide(curve, level, pts) {
590 pts.push(curve[2]);
591 pts.push(curve[3]);
592 pts.push(curve[4]);
593 pts.push(curve[5]);
596 chop(curve, part1, part2);
603 function chopIntoQuadsPOW2(curve, pow2, pts) {
604 subdivide(curve, pow2, pts);
608 function drawConic(curve, srcLeft, srcTop, hscale, vscale) {
610 var pow2 = computeQuadPOW2(curve, tol);
612 chopIntoQuadsPOW2(curve, pow2, pts);
637 var curve = test[curves];
638 origin.push(curve[0]);
639 origin.push(curve[1]);
641 startPt.push(curve[2]);
642 startPt.push(curve[3]);
645 if (curve.length == 4) {
646 endPt.push(curve[2]);
647 endPt.push(curve[3]);
648 } else if (curve.length == 6 || curve.length == 7) {
649 endPt.push(curve[4]);
650 endPt.push(curve[5]);
651 } else if (curve.length == 8) {
652 endPt.push(curve[6]);
653 endPt.push(curve[7]);
659 midPt.push(x_at_t(curve, 0.5));
660 midPt.push(y_at_t(curve, 0.5));
663 shortPt.push(x_at_t(curve, 0.25));
664 shortPt.push(y_at_t(curve, 0.25));
679 var curve = test[curves];
680 if (curve.length >= 6 && curve.length <= 8) {
682 var sects = ray_curve_intersect(origin, hullEnds[opp], curve);
689 var ix = x_at_t(curve, intersection) - origin[0];
690 var iy = y_at_t(curve, intersection) - origin[1];
697 if (delta > (curve.length != 8 ? 1e-5 : 1e-4)) {
714 var curve = test[sIndex];
715 var ix = x_at_t(curve, intersection) - origin[0];
716 var iy = y_at_t(curve, intersection) - origin[1];
739 var curve = test[draw_id != 2 ? curves : test.length - curves - 1];
740 if (curve.length != 4 && curve.length != 6 && curve.length != 7 && curve.length != 8) {
745 if (draw_cubic_red ? curve.length == 8 : firstInside == curves) {
750 drawLine(curve[0], curve[1], curve[2], curve[3]);
752 if (curve.length > 4) drawLine(curve[2], curve[3], curve[4], curve[5]);
753 if (curve.length == 8) drawLine(curve[4], curve[5], curve[6], curve[7]);
756 if (curve.length == 6 || curve.length == 7) {
757 drawLine(curve[0], curve[1], curve[4], curve[5]);
759 if (curve.length == 8) drawLine(curve[0], curve[1], curve[6], curve[7]);
763 ctx.moveTo((curve[0] - srcLeft) * hscale, (curve[1] - srcTop) * vscale);
764 if (curve.length == 4) {
765 ctx.lineTo((curve[2] - srcLeft) * hscale, (curve[3] - srcTop) * vscale);
766 } else if (curve.length == 6) {
768 (curve[2] - srcLeft) * hscale, (curve[3] - srcTop) * vscale,
769 (curve[4] - srcLeft) * hscale, (curve[5] - srcTop) * vscale);
770 } else if (curve.length == 7) {
771 drawConic(curve, srcLeft, srcTop, hscale, vscale);
774 (curve[2] - srcLeft) * hscale, (curve[3] - srcTop) * vscale,
775 (curve[4] - srcLeft) * hscale, (curve[5] - srcTop) * vscale,
776 (curve[6] - srcLeft) * hscale, (curve[7] - srcTop) * vscale);
778 if (draw_cubic_red ? curve.length == 8 : firstInside == curves) {
785 drawPoint(curve[0], curve[1], false);
786 if (draw_endpoints > 1 || curve.length == 4) {
787 drawPoint(curve[2], curve[3], curve.length == 4 && draw_endpoints == 3);
789 if (curve.length == 6 || curve.length == 7 ||
790 (draw_endpoints > 1 && curve.length == 8)) {
791 drawPoint(curve[4], curve[5], (curve.length == 6 || curve.length == 7) && draw_endpoints == 3);
793 if (curve.length == 8) {
794 drawPoint(curve[6], curve[7], curve.length == 8 && draw_endpoints == 3);
803 var midX = x_at_t(curve, 0.5);
804 var midY = y_at_t(curve, 0.5);
807 drawLine(curve[0], curve[1], midX, midY);
817 var midX = x_at_t(curve, midT);
818 var midY = y_at_t(curve, midT);
821 drawLine(curve[0], curve[1], midX, midY);
834 var midX = x_at_t(curve, midT);
835 var midY = y_at_t(curve, midT);
838 drawLine(curve[0], curve[1], midX, midY);
843 if (curve.length >= 6 && curve.length <= 8) {
847 var x = x_at_t(curve, intersection);
848 var y = y_at_t(curve, intersection);
851 drawLine(curve[0], curve[1], x, y);
858 var px = x_at_t(curve, 0.75);
859 var py = y_at_t(curve, 0.75);
867 if (draw_cubic_red ? curve.length == 8 : firstInside == curves) {
880 var t = curveClosestT(curve, mouseX, mouseY);
882 var x = x_at_t(curve, t);
883 var y = y_at_t(curve, t);
900 drawPointAtT(curve);
905 if (ids[i + 1] == curve) {
911 var px = x_at_t(curve, 0.5);
912 var py = y_at_t(curve, 0.5);
961 var curve = tests[testIndex][curves];
962 if (curve.length != 7) {
966 w = curve[6];
1032 var curve = tests[testIndex][curves];
1033 if (curve.length != 7) {
1037 curve[6] = w;
1059 var curve = tests[testIndex][curves];
1060 var last = curve.length - (curve.length % 2 == 1 ? 1 : 0);
1062 focusXmin = Math.min(focusXmin, curve[idx]);
1063 focusXmax = Math.max(focusXmax, curve[idx]);
1064 focusYmin = Math.min(focusYmin, curve[idx + 1]);
1065 focusYmax = Math.max(focusYmax, curve[idx + 1]);
1259 var curve = tests[testIndex][curves];
1260 if (curve.length != 7) {