Index: tools/pathops_sorter.htm |
diff --git a/tools/pathops_sorter.htm b/tools/pathops_sorter.htm |
index 3c24aeb138e7a10c6a1adca2eadca009ef8f8234..65868cdcfdc693642e869bd75710a8c258930fab 100644 |
--- a/tools/pathops_sorter.htm |
+++ b/tools/pathops_sorter.htm |
@@ -6,51 +6,18 @@ |
<title></title> |
<div style="height:0"> |
-<div id="sect0"> |
-{{{{306.588013,-227.983994}, {212.464996,-262.242004}, {95.5512009,58.9763985}}}, 0.707107008f}, |
-{{{{377.218994,-141.981003}, {40.578701,-201.339996}, {23.1854992,-102.697998}}}, 0.707107008f}, |
+<div id="angle"> |
+{{{2, 6, 1, 2, 7.16666698f, 6.66666698f, -4.66666651f, 7.66666651f}}} |
+{{{1, 2, 7.16666698f, 6.66666698f, -4.66666651f, 7.66666651f, 2, 6}}} |
+{{{1.995156049728393555, 5.980457782745361328}, {2.08147298604749853, 5.917692615073925744}, {2.164281118403629023, 5.850987095630077128}, {2.242042064666748047, 5.780299663543701172}}} |
+{{{1.995156049728393555, 5.980457782745361328}, {1.82665117196054072, 6.185735619599722845}, {1.80264212281170999, 5.19703332512428684}, {1.994958639144897461, 5.979661464691162109}}} |
+{{{1.995156049728393555, 5.980457782745361328}, {1.825196881732315868, 6.187507280789372288}, {1.801190554235020613, 5.204762216940081565}, {2, 6}}} |
</div> |
-<div id="sect1"> |
-{{{{377.218994,-141.981003}, {40.578701,-201.339996}, {23.1854992,-102.697998}}}, 0.707107008f}, |
-{{{{306.58801299999999, -227.983994}, {212.46499600000001, -262.24200400000001}, {95.551200899999998, 58.976398500000002}}}, 0.707107008f} id=1 |
-{{{{377.21899400000001, -141.98100299999999}, {237.77799285476553, -166.56830755921084}, {134.08399674208422, -155.06258330544892}}}, 0.788580656f} id=2 |
-{{{{134.08399674208422, -155.06258330544892}, {30.390000629402859, -143.55685905168704}, {23.185499199999999, -102.697998}}}, 0.923879623f} id=4 |
-</div> |
- |
-<div id="sect2"> |
-{{{{306.588013,-227.983994}, {212.464996,-262.242004}, {95.5512009,58.9763985}}}, 0.707107008f}, |
-{{{{377.218994,-141.981003}, {40.578701,-201.339996}, {23.1854992,-102.697998}}}, 0.707107008f}, |
-{{{{205.78973252799028, -158.12538713371103}, {143.97848953841861, -74.076645245042371}, {95.551200899999998, 58.976398500000002}}}, 0.923879623f} id=3 |
-{{{{377.21899400000001, -141.98100299999999}, {237.77799285476553, -166.56830755921084}, {134.08399674208422, -155.06258330544892}}}, 0.788580656f} id=2 |
-</div> |
- |
-<div id="sect3"> |
-{{{{306.588013,-227.983994}, {212.464996,-262.242004}, {95.5512009,58.9763985}}}, 0.707107008f}, |
-{{{{377.218994,-141.981003}, {40.578701,-201.339996}, {23.1854992,-102.697998}}}, 0.707107008f}, |
-{{{{205.78973252799028, -158.12538713371103}, {143.97848953841861, -74.076645245042371}, {95.551200899999998, 58.976398500000002}}}, 0.923879623f} id=3 |
-{{{{252.08225670812539, -156.90491625851064}, {185.93099479842493, -160.81544543232982}, {134.08399674208422, -155.06258330544892}}}, 0.835816324f} id=6 |
-</div> |
- |
-<div id="sect4"> |
-{{{{306.588013,-227.983994}, {212.464996,-262.242004}, {95.5512009,58.9763985}}}, 0.707107008f}, |
-{{{{377.218994,-141.981003}, {40.578701,-201.339996}, {23.1854992,-102.697998}}}, 0.707107008f}, |
-{{{{205.78973252799028, -158.12538713371103}, {174.88411103320448, -116.10101618937664}, {145.19509369736275, -56.857102571363754}}}, 0.871667147f} id=3 |
-{{{{252.08225670812539, -156.90491625851064}, {185.93099479842493, -160.81544543232982}, {134.08399674208422, -155.06258330544892}}}, 0.835816324f} id=6 |
-</div> |
- |
-<div id="sect5"> |
-{{{{306.588013,-227.983994}, {212.464996,-262.242004}, {95.5512009,58.9763985}}}, 0.707107008f}, |
-{{{{377.218994,-141.981003}, {40.578701,-201.339996}, {23.1854992,-102.697998}}}, 0.707107008f}, |
-{{{{205.78973252799028, -158.12538713371103}, {174.88411103320448, -116.10101618937664}, {145.19509369736275, -56.857102571363754}}}, 0.871667147f} id=3 |
-{{{{252.08225670812539, -156.90491625851064}, {219.70109133058406, -158.81912754088933}, {190.17095392508796, -158.38373974664466}}}, 0.858306944f} id=6 |
-</div> |
- |
-<div id="sect6"> |
-{{{{306.588013,-227.983994}, {212.464996,-262.242004}, {95.5512009,58.9763985}}}, 0.707107008f}, |
-{{{{377.218994,-141.981003}, {40.578701,-201.339996}, {23.1854992,-102.697998}}}, 0.707107008f}, |
-{{{{205.78973252799028, -158.12538713371103}, {190.33692178059735, -137.11320166154385}, {174.87004877564593, -111.2132534799228}}}, 0.858117759f} id=3 |
-{{{{252.08225670812539, -156.90491625851064}, {219.70109133058406, -158.81912754088933}, {190.17095392508796, -158.38373974664466}}}, 0.858306944f} id=6 |
+<div id="ref"> |
+{{{0.7153972983360290527, 4.712343692779541016}, {0.2472269223126296878, 4.55502436068874772}, {-0.1220090791716240131, 4.244018092892478222}, {0, 4}}}, |
+{{{0.7153972983360290527, 4.712343692779541016}, {0.1339736781445877156, 4.133975051508096854}, {0.7320473976783675729, 3.63397630116081638}, {2, 3}}}, |
+{{fX=-0.0012699038296868359 fY=-0.0012605104293301750 } {fX=-0.0025337575085910835 fY=-0.0025229424048465177 } |
</div> |
</div> |
@@ -58,13 +25,8 @@ |
<script type="text/javascript"> |
var testDivs = [ |
-sect0, |
-sect1, |
-sect2, |
-sect3, |
-sect4, |
-sect5, |
-sect6, |
+ angle, |
+ ref, |
]; |
var decimal_places = 3; |
@@ -499,7 +461,7 @@ function dxy_at_t(curve, t) { |
function drawPointAtT(curve) { |
var x = x_at_t(curve, curveT); |
var y = y_at_t(curve, curveT); |
- drawPoint(x, y); |
+ drawPoint(x, y, false); |
} |
function drawLine(x1, y1, x2, y2) { |
@@ -511,7 +473,7 @@ function dxy_at_t(curve, t) { |
ctx.stroke(); |
} |
- function drawPoint(px, py) { |
+ function drawPoint(px, py, xend) { |
for (var pts = 0; pts < drawnPts.length; pts += 2) { |
var x = drawnPts[pts]; |
var y = drawnPts[pts + 1]; |
@@ -524,8 +486,15 @@ function dxy_at_t(curve, t) { |
var _px = (px - srcLeft) * scale; |
var _py = (py - srcTop) * scale; |
ctx.beginPath(); |
- ctx.arc(_px, _py, 3, 0, Math.PI * 2, true); |
- ctx.closePath(); |
+ if (xend) { |
+ ctx.moveTo(_px - 3, _py - 3); |
+ ctx.lineTo(_px + 3, _py + 3); |
+ ctx.moveTo(_px - 3, _py + 3); |
+ ctx.lineTo(_px + 3, _py - 3); |
+ } else { |
+ ctx.arc(_px, _py, 3, 0, Math.PI * 2, true); |
+ ctx.closePath(); |
+ } |
ctx.stroke(); |
if (draw_point_xy) { |
var label = px.toFixed(decimal_places) + ", " + py.toFixed(decimal_places); |
@@ -537,7 +506,7 @@ function dxy_at_t(curve, t) { |
} |
function drawPointSolid(px, py) { |
- drawPoint(px, py); |
+ drawPoint(px, py, false); |
ctx.fillStyle = "rgba(0,0,0, 0.4)"; |
ctx.fill(); |
} |
@@ -814,15 +783,17 @@ function dxy_at_t(curve, t) { |
} |
ctx.stroke(); |
if (draw_endpoints > 0) { |
- drawPoint(curve[0], curve[1]); |
+ drawPoint(curve[0], curve[1], false); |
if (draw_endpoints > 1 || curve.length == 4) { |
- drawPoint(curve[2], curve[3]); |
+ drawPoint(curve[2], curve[3], curve.length == 4 && draw_endpoints == 3); |
} |
if (curve.length == 6 || curve.length == 7 || |
(draw_endpoints > 1 && curve.length == 8)) { |
- drawPoint(curve[4], curve[5]); |
+ drawPoint(curve[4], curve[5], (curve.length == 6 || curve.length == 7) && draw_endpoints == 3); |
+ } |
+ if (curve.length == 8) { |
+ drawPoint(curve[6], curve[7], curve.length == 8 && draw_endpoints == 3); |
} |
- if (curve.length == 8) drawPoint(curve[6], curve[7]); |
} |
if (draw_midpoint != 0) { |
if ((curves == 0) == (midLeft == 0)) { |
@@ -1168,7 +1139,7 @@ function dxy_at_t(curve, t) { |
redraw(); |
break; |
case 'e': |
- draw_endpoints = (draw_endpoints + 1) % 3; |
+ draw_endpoints = (draw_endpoints + 1) % 4; |
redraw(); |
break; |
case 'f': |