Home | History | Annotate | Download | only in tools

Lines Matching full:curve

125             var curve = test[curves];
126 var last = curve.length - (curve.length % 2 == 1 ? 1 : 0);
128 xmin = Math.min(xmin, curve[idx]);
129 xmax = Math.max(xmax, curve[idx]);
130 ymin = Math.min(ymin, curve[idx + 1]);
131 ymax = Math.max(ymax, curve[idx + 1]);
183 function dxy_at_t(curve, t) {
185 if (curve.length == 6) {
189 dxy.x = a * curve[0] + b * curve[2] + c * curve[4];
190 dxy.y = a * curve[1] + b * curve[3] + c * curve[5];
191 } else if (curve.length == 7) {
192 var p20x = curve[4] - curve[0];
193 var p20y = curve[5] - curve[1];
194 var p10xw = (curve[2] - curve[0]) * curve[6];
195 var p10yw = (curve[3] - curve[1]) * curve[6];
196 var coeff0x = curve[6] * p20x - p20x;
197 var coeff0y = curve[6] * p20y - p20y;
202 } else if (curve.length == 8) {
204 var a = curve[0];
205 var b = curve[2];
206 var c = curve[4];
207 var d = curve[6];
209 a = curve[1];
210 b = curve[3];
211 c = curve[5];
212 d = curve[7];
384 function ray_curve_intersect(startPt, endPt, curve) {
388 var len = (curve.length == 7 ? 6 : curve.length) / 2;
390 r[n] = (curve[n * 2 + 1] - startPt[1]) * adj - (curve[n * 2] - startPt[0]) * opp;
392 if (curve.length == 6) {
400 if (curve.length == 7) {
402 var B = r[1] * curve[6];
418 function x_at_t(curve, t) {
420 if (curve.length == 4) {
421 return one_t * curve[0] + t * curve[2];
425 if (curve.length == 6) {
426 return one_t2 * curve[0] + 2 * one_t * t * curve[2] + t2 * curve[4];
428 if (curve.length == 7) {
429 var numer = one_t2 * curve[0] + 2 * one_t * t * curve[2] * curve[6]
430 + t2 * curve[4];
431 var denom = one_t2 + 2 * one_t * t * curve[6]
439 return a * curve[0] + b * curve[2] + c * curve[4] + d * curve[6];
442 function y_at_t(curve, t) {
444 if (curve.length == 4) {
445 return one_t * curve[1] + t * curve[3];
449 if (curve.length == 6) {
450 return one_t2 * curve[1] + 2 * one_t * t * curve[3] + t2 * curve[5];
452 if (curve.length == 7) {
453 var numer = one_t2 * curve[1] + 2 * one_t * t * curve[3] * curve[6]
454 + t2 * curve[5];
455 var denom = one_t2 + 2 * one_t * t * curve[6]
463 return a * curve[1] + b * curve[3] + c * curve[5] + d * curve[7];
466 function drawPointAtT(curve) {
467 var x = x_at_t(curve, curveT);
468 var y = y_at_t(curve, curveT);
525 function curveClosestT(curve, x, y) {
530 var testX = x_at_t(curve, i / 16);
533 var testY = y_at_t(curve, i / 16);
557 function computeQuadPOW2(curve, tol) {
558 var a = curve[6] - 1;
560 var x = k * (curve[0] - 2 * curve[2] + curve[4]);
561 var y = k * (curve[1] - 2 * curve[3] + curve[5]);
578 function chop(curve, part1, part2) {
579 var w = curve[6];
581 part1[0] = curve[0];
582 part1[1] = curve[1];
583 part1[2] = (curve[0] + curve[2] * w) * scale;
584 part1[3] = (curve[1] + curve[3] * w) * scale;
585 part1[4] = part2[0] = (curve[0] + (curve[2] * w) * 2 + curve[4]) * scale * 0.5;
586 part1[5] = part2[1] = (curve[1] + (curve[3] * w) * 2 + curve[5]) * scale * 0.5;
587 part2[2] = (curve[2] * w + curve[4]) * scale;
588 part2[3] = (curve[3] * w + curve[5]) * scale;
589 part2[4] = curve[4];
590 part2[5] = curve[5];
594 function subdivide(curve, level, pts) {
596 pts.push(curve[2]);
597 pts.push(curve[3]);
598 pts.push(curve[4]);
599 pts.push(curve[5]);
602 chop(curve, part1, part2);
609 function chopIntoQuadsPOW2(curve, pow2, pts) {
610 subdivide(curve, pow2, pts);
614 function drawConic(curve, srcLeft, srcTop, hscale, vscale) {
616 var pow2 = computeQuadPOW2(curve, tol);
618 chopIntoQuadsPOW2(curve, pow2, pts);
643 var curve = test[curves];
644 origin.push(curve[0]);
645 origin.push(curve[1]);
647 startPt.push(curve[2]);
648 startPt.push(curve[3]);
651 if (curve.length == 4) {
652 endPt.push(curve[2]);
653 endPt.push(curve[3]);
654 } else if (curve.length == 6 || curve.length == 7) {
655 endPt.push(curve[4]);
656 endPt.push(curve[5]);
657 } else if (curve.length == 8) {
658 endPt.push(curve[6]);
659 endPt.push(curve[7]);
665 midPt.push(x_at_t(curve, 0.5));
666 midPt.push(y_at_t(curve, 0.5));
669 shortPt.push(x_at_t(curve, 0.25));
670 shortPt.push(y_at_t(curve, 0.25));
685 var curve = test[curves];
686 if (curve.length >= 6 && curve.length <= 8) {
688 var sects = ray_curve_intersect(origin, hullEnds[opp], curve);
695 var ix = x_at_t(curve, intersection) - origin[0];
696 var iy = y_at_t(curve, intersection) - origin[1];
703 if (delta > (curve.length != 8 ? 1e-5 : 1e-4)) {
720 var curve = test[sIndex];
721 var ix = x_at_t(curve, intersection) - origin[0];
722 var iy = y_at_t(curve, intersection) - origin[1];
745 var curve = test[draw_id != 2 ? curves : test.length - curves - 1];
746 if (curve.length != 4 && curve.length != 6 && curve.length != 7 && curve.length != 8) {
751 if (draw_cubic_red ? curve.length == 8 : firstInside == curves) {
756 drawLine(curve[0], curve[1], curve[2], curve[3]);
758 if (curve.length > 4) drawLine(curve[2], curve[3], curve[4], curve[5]);
759 if (curve.length == 8) drawLine(curve[4], curve[5], curve[6], curve[7]);
762 if (curve.length == 6 || curve.length == 7) {
763 drawLine(curve[0], curve[1], curve[4], curve[5]);
765 if (curve.length == 8) drawLine(curve[0], curve[1], curve[6], curve[7]);
769 ctx.moveTo((curve[0] - srcLeft) * hscale, (curve[1] - srcTop) * vscale);
770 if (curve.length == 4) {
771 ctx.lineTo((curve[2] - srcLeft) * hscale, (curve[3] - srcTop) * vscale);
772 } else if (curve.length == 6) {
774 (curve[2] - srcLeft) * hscale, (curve[3] - srcTop) * vscale,
775 (curve[4] - srcLeft) * hscale, (curve[5] - srcTop) * vscale);
776 } else if (curve.length == 7) {
777 drawConic(curve, srcLeft, srcTop, hscale, vscale);
780 (curve[2] - srcLeft) * hscale, (curve[3] - srcTop) * vscale,
781 (curve[4] - srcLeft) * hscale, (curve[5] - srcTop) * vscale,
782 (curve[6] - srcLeft) * hscale, (curve[7] - srcTop) * vscale);
784 if (draw_cubic_red ? curve.length == 8 : firstInside == curves) {
791 drawPoint(curve[0], curve[1], false);
792 if (draw_endpoints > 1 || curve.length == 4) {
793 drawPoint(curve[2], curve[3], curve.length == 4 && draw_endpoints == 3);
795 if (curve.length == 6 || curve.length == 7 ||
796 (draw_endpoints > 1 && curve.length == 8)) {
797 drawPoint(curve[4], curve[5], (curve.length == 6 || curve.length == 7) && draw_endpoints == 3);
799 if (curve.length == 8) {
800 drawPoint(curve[6], curve[7], curve.length == 8 && draw_endpoints == 3);
809 var midX = x_at_t(curve, 0.5);
810 var midY = y_at_t(curve, 0.5);
813 drawLine(curve[0], curve[1], midX, midY);
823 var midX = x_at_t(curve, midT);
824 var midY = y_at_t(curve, midT);
827 drawLine(curve[0], curve[1], midX, midY);
840 var midX = x_at_t(curve, midT);
841 var midY = y_at_t(curve, midT);
844 drawLine(curve[0], curve[1], midX, midY);
849 if (curve.length >= 6 && curve.length <= 8) {
853 var x = x_at_t(curve, intersection);
854 var y = y_at_t(curve, intersection);
857 drawLine(curve[0], curve[1], x, y);
864 var px = x_at_t(curve, 0.75);
865 var py = y_at_t(curve, 0.75);
873 if (draw_cubic_red ? curve.length == 8 : firstInside == curves) {
886 var t = curveClosestT(curve, mouseX, mouseY);
888 var x = x_at_t(curve, t);
889 var y = y_at_t(curve, t);
906 curve);
911 if (ids[i + 1] == curve) {
917 var px = x_at_t(curve, 0.5);
918 var py = y_at_t(curve, 0.5);
967 var curve = tests[testIndex][curves];
968 if (curve.length != 7) {
972 w = curve[6];
1038 var curve = tests[testIndex][curves];
1039 if (curve.length != 7) {
1043 curve[6] = w;
1065 var curve = tests[testIndex][curves];
1066 var last = curve.length - (curve.length % 2 == 1 ? 1 : 0);
1068 focusXmin = Math.min(focusXmin, curve[idx]);
1069 focusXmax = Math.max(focusXmax, curve[idx]);
1070 focusYmin = Math.min(focusYmin, curve[idx + 1]);
1071 focusYmax = Math.max(focusYmax, curve[idx + 1]);
1265 var curve = tests[testIndex][curves];
1266 if (curve.length != 7) {