diff --git a/data/nazca_heron.dat b/data/nazca_heron.dat index 23261b8..14aebf8 100644 --- a/data/nazca_heron.dat +++ b/data/nazca_heron.dat @@ -580,7 +580,6 @@ 82.9798 3.14365 81.8622 3.11751 80.976 2.96988 -80.0621 2.84425 81.0885 3.47024 81.9378 3.6489 82.4922 3.83974 diff --git a/data/nazca_heron_old.dat b/data/nazca_heron_old.dat new file mode 100644 index 0000000..23261b8 --- /dev/null +++ b/data/nazca_heron_old.dat @@ -0,0 +1,1037 @@ +-91.726 10.4022 +-92.5616 10.385 +-93.0053 10.4193 +-93.8429 10.4444 +-94.4002 10.3881 +-95.1773 10.4322 +-95.731 10.328 +-96.0661 10.0034 +-95.7371 9.52215 +-95.0108 9.51904 +-93.8987 9.40352 +-93.063 9.41048 +-92.1174 9.36365 +-91.1689 9.32841 +-90.1664 9.32695 +-89.2738 9.29848 +-87.9935 9.21778 +-87.1011 9.24003 +-85.9323 9.16578 +-84.818 9.2136 +-83.8152 9.2263 +-82.3111 9.25894 +-81.2523 9.21521 +-80.3055 9.26966 +-79.1913 9.27179 +-78.3561 9.26927 +-77.4071 9.2506 +-76.2938 9.15212 +-75.2359 9.21265 +-74.2889 9.23221 +-73.2304 9.22176 +-72.3344 9.24597 +-71.3911 9.06377 +-70.7225 9.00533 +-69.8321 8.87212 +-68.5508 8.90126 +-67.2126 8.90584 +-66.2109 8.83119 +-65.1525 8.76935 +-64.2054 8.77328 +-62.9784 8.69629 +-62.0884 8.7899 +-61.1999 8.81082 +-60.4738 8.81708 +-59.6372 8.77889 +-58.3559 8.77041 +-57.8008 8.75645 +-57.2974 8.71659 +-56.6289 8.69558 +-55.7933 8.71756 +-55.1804 8.7228 +-54.4562 8.71456 +-53.3976 8.71721 +-52.2278 8.78652 +-51.4479 8.73714 +-50.4451 8.74938 +-49.8323 8.77075 +-48.6067 8.78685 +-47.7153 8.78148 +-46.9345 8.79131 +-45.8212 8.72036 +-44.9864 8.73653 +-43.76 8.7899 +-43.2029 8.80459 +-42.5953 8.82626 +-42.0346 8.81404 +-41.4759 8.75151 +-40.7516 8.71843 +-40.1388 8.78394 +-39.5817 8.75781 +-39.1361 8.75758 +-38.6347 8.80655 +-38.2447 8.77854 +-37.8547 8.74123 +-37.4091 8.7923 +-35.9611 8.78602 +-34.6793 8.78076 +-33.8436 8.83903 +-32.8966 8.83963 +-32.0052 8.8087 +-31.0024 8.86909 +-29.9997 8.8264 +-29.1083 8.82878 +-27.7705 8.83849 +-26.5457 8.72773 +-25.4873 8.7165 +-24.2616 8.6655 +-23.0892 8.68424 +-22.1449 8.54477 +-20.8074 8.50105 +-19.5257 8.45263 +-17.9667 8.37676 +-16.6851 8.31799 +-15.5706 8.3359 +-14.401 8.27044 +-13.2307 8.27746 +-12.5648 8.24932 +-11.7826 8.30542 +-11.225 8.26741 +-10.6119 8.33761 +-9.94418 8.2737 +-9.10957 8.29055 +-8.16166 8.32522 +-7.15627 8.31888 +-6.10021 8.19418 +-5.04173 8.20764 +-4.20608 8.21455 +-3.25902 8.21726 +-2.09019 8.14631 +-1.30858 8.09495 +-0.306399 8.16141 +0.528273 8.19199 +1.97994 8.12994 +2.75763 8.20323 +3.48095 8.19986 +4.54034 8.18316 +5.26597 8.14464 +5.93308 8.20355 +6.37876 8.23306 +6.93779 8.20172 +7.38503 8.28515 +7.75928 8.14925 +8.10818 7.83366 +8.55309 7.68152 +9.27282 7.59373 +10.1085 7.35329 +10.6702 7.35345 +11.5114 7.20388 +12.5089 7.36493 +13.4027 7.4728 +14.412 7.6901 +15.1803 8.05105 +15.6266 8.26723 +16.2416 8.29494 +17.0758 8.37201 +17.9672 8.45068 +18.6906 8.3527 +19.4689 8.36621 +20.0833 8.32903 +20.8076 8.36605 +21.5349 8.39958 +22.811 8.30214 +23.5936 8.32996 +24.2817 8.11023 +24.3617 7.60334 +24.4628 6.99157 +24.4059 6.20837 +24.5479 5.43455 +24.7617 4.81808 +25.0482 4.37841 +25.4039 3.83047 +25.9341 3.55091 +26.5429 3.48577 +27.1405 3.94951 +27.7711 4.42902 +28.3433 5.30396 +29.0083 5.9264 +29.3964 6.59346 +30.0334 7.39695 +30.4568 7.93096 +30.9385 8.5706 +31.4443 9.3344 +31.9062 9.83899 +32.3178 9.99556 +32.4543 9.44194 +32.3424 8.99712 +32.3298 8.3286 +32.2872 7.66008 +32.3614 7.04572 +32.2586 6.26963 +32.1964 5.65849 +32.1029 4.76416 +32.0489 3.98324 +32.0854 3.31228 +31.9712 2.75763 +32.0396 2.13545 +31.8344 1.53202 +31.8289 0.861208 +31.99 0.183618 +32.3457 -0.243851 +32.8982 -0.739612 +33.7837 -0.849395 +34.3622 -0.710696 +34.8876 -0.0191316 +35.4023 0.808785 +35.7456 1.19234 +36.2095 1.94174 +36.8011 2.75484 +37.2693 3.52304 +37.7639 4.47142 +38.2574 5.25764 +38.5964 5.86575 +39.0468 6.53111 +39.4802 7.20908 +39.8636 7.93611 +40.3677 8.68935 +40.853 9.50473 +41.3001 10.2266 +41.5896 10.8341 +41.8697 11.2788 +42.1444 11.7269 +42.4414 12.3274 +42.8817 13.0026 +43.044 13.3927 +43.2547 13.7354 +43.8157 14.4808 +44.21 14.4567 +44.2384 13.7881 +44.214 13.1202 +44.2478 12.3397 +44.2545 11.504 +44.2471 10.2762 +44.383 9.55421 +44.3819 8.8306 +44.4857 7.99434 +44.4374 7.1038 +44.4823 6.49018 +44.5055 5.54178 +44.3968 4.65176 +44.4035 3.87539 +44.3112 3.09147 +44.3678 2.31195 +44.3634 1.64156 +44.4741 1.08215 +44.7443 0.405587 +45.098 -0.0812431 +45.5916 -0.319965 +46.0404 -0.518244 +47.0404 -0.187042 +47.6198 0.241597 +48.0225 1.04872 +48.4879 1.70359 +49.0113 2.52644 +49.4565 3.30864 +49.7829 4.08959 +50.2298 4.64717 +50.7013 5.35933 +50.968 6.06294 +51.3782 6.77734 +51.8168 7.50498 +52.2817 8.27353 +52.5085 8.88449 +52.9297 9.67783 +53.2782 10.2838 +53.7366 10.9445 +54.1325 11.6654 +54.43 12.1549 +54.74 12.7268 +54.9842 13.2537 +55.3914 13.7539 +55.9159 14.019 +56.1591 13.621 +56.1814 12.7857 +56.0542 11.8895 +55.901 10.9481 +55.755 10.1629 +55.6441 9.16009 +55.4555 8.44064 +55.3158 7.48927 +55.1979 6.76738 +55.1458 6.04168 +55.0153 5.20856 +54.9225 4.47831 +54.6817 3.75997 +54.4404 2.76892 +54.3443 1.69915 +54.3354 0.809666 +54.1511 -0.0300711 +54.2166 -0.702496 +54.453 -1.31046 +54.6851 -1.85943 +55.1255 -2.25343 +55.7401 -2.43474 +56.4817 -2.28494 +57.1939 -1.76082 +57.67 -1.0781 +58.1661 -0.0158294 +58.7044 0.911084 +59.1398 1.69647 +59.5985 2.35776 +59.9523 3.04503 +60.2915 3.7707 +60.7648 4.36495 +61.1845 5.10498 +61.5282 5.65631 +61.9625 6.44572 +62.3804 6.92578 +62.7068 7.38979 +63.1888 7.02434 +63.7594 6.71273 +64.4182 5.92176 +64.9326 5.49007 +65.436 4.93653 +65.9846 4.48258 +66.3835 3.82101 +66.8552 3.23917 +67.3884 2.6537 +67.8008 2.17994 +68.2584 1.64344 +68.2649 0.417823 +68.2525 -0.137759 +68.212 -0.863123 +68.2058 -1.53202 +68.1769 -2.19838 +68.2882 -3.03763 +68.1923 -3.65085 +68.2978 -4.37321 +68.3021 -5.31814 +68.2969 -6.10242 +68.4 -6.88111 +68.3005 -7.82472 +68.273 -8.44002 +68.2464 -9.2692 +68.1829 -9.71818 +68.245 -10.5034 +68.3322 -11.2255 +68.3078 -11.8903 +68.2012 -12.5096 +68.3418 -13.1022 +68.6065 -13.3261 +69.0974 -13.3425 +69.0796 -12.6196 +69.0225 -11.5006 +69.1975 -10.0556 +69.2256 -8.9414 +69.243 -7.60627 +69.3237 -6.21134 +69.4118 -4.87177 +69.2502 -3.87182 +69.2618 -2.97959 +69.3274 -2.14482 +69.3415 -1.36489 +69.3206 -0.686317 +69.6114 -0.427229 +70.0984 -0.312499 +70.4035 -0.864603 +70.2948 -1.58221 +70.2543 -2.36766 +70.2135 -3.09189 +70.2426 -3.81611 +70.1699 -4.54469 +70.2999 -5.2107 +70.2593 -5.87737 +70.1916 -6.43108 +70.1723 -6.93454 +70.244 -7.43724 +70.2816 -8.16147 +70.289 -8.88495 +70.3531 -9.72134 +70.3477 -10.3873 +70.4535 -11.0022 +70.4808 -11.9497 +70.4864 -12.6171 +70.4493 -13.34 +70.6577 -13.7504 +71.1761 -14.0215 +71.6078 -13.6693 +71.7849 -12.7296 +71.7493 -11.1698 +71.7383 -10.222 +71.6867 -9.21995 +71.5978 -8.10296 +71.6945 -6.65731 +71.724 -5.6547 +71.6909 -4.93167 +71.7255 -4.0947 +71.6829 -3.09189 +71.6556 -2.31361 +71.5993 -1.80799 +71.7354 -1.15126 +72.1227 -0.732545 +72.5957 -0.924082 +72.7269 -1.42072 +72.798 -2.41973 +72.955 -3.03618 +72.9628 -3.64899 +72.95 -4.20608 +72.939 -4.93373 +73.1754 -5.7659 +73.2306 -6.60159 +73.258 -7.4394 +73.3313 -8.16212 +73.4053 -9.05141 +73.5125 -9.66491 +73.582 -10.2253 +73.6984 -11.0503 +73.9074 -11.6638 +74.2887 -12.1152 +74.8254 -12.0555 +75.0308 -11.4474 +74.9288 -10.3949 +74.7818 -9.44347 +74.6863 -8.04964 +74.5524 -7.05342 +74.5059 -5.76663 +74.406 -4.81738 +74.1716 -3.98324 +74.1828 -3.14729 +74.1627 -2.19507 +73.9711 -1.31592 +74.2954 -1.13944 +74.4945 -1.70344 +74.7325 -2.59075 +74.8428 -3.48254 +75.0145 -4.26162 +75.1478 -5.1454 +75.3825 -5.99195 +75.5103 -6.71359 +75.6344 -7.54683 +75.7996 -8.32736 +75.9504 -9.2252 +76.3494 -9.94925 +76.7611 -10.013 +77.0247 -9.55421 +77.0168 -8.60758 +76.7722 -7.66401 +76.5674 -6.32409 +76.3879 -5.43546 +76.1592 -4.37618 +76.079 -3.48081 +75.9239 -2.71101 +75.7774 -2.03729 +75.699 -1.59737 +75.9528 -1.05432 +76.6689 -0.939149 +77.1612 -1.32968 +77.4792 -1.61957 +77.9039 -1.91182 +78.1904 -1.77006 +78.6284 -1.71267 +79.0308 -1.85639 +79.5234 -2.19157 +79.7474 -2.14619 +80.2003 -2.47286 +80.416 -2.7096 +80.9208 -2.76515 +81.2445 -2.63541 +81.4789 -2.47298 +81.858 -2.71375 +82.3006 -3.00137 +82.6434 -3.14951 +82.8334 -3.30639 +82.9618 -3.5857 +83.0542 -4.13459 +83.3045 -4.51251 +83.4828 -4.53942 +83.6902 -5.01666 +84.1795 -5.22944 +84.433 -5.47731 +84.8724 -5.69724 +85.44 -5.65169 +85.2045 -4.93327 +84.9319 -4.59458 +84.5801 -4.0562 +85.0434 -4.41845 +85.4846 -4.5517 +85.822 -4.58297 +86.4291 -4.66072 +86.8641 -4.8989 +87.3249 -5.1661 +87.7599 -5.17183 +88.1596 -5.38038 +88.8845 -5.54301 +89.0758 -5.03874 +88.9908 -4.60685 +88.4392 -4.31739 +87.9944 -3.92687 +87.8263 -3.73325 +87.3787 -3.69144 +86.9907 -3.74579 +86.667 -3.74799 +86.307 -3.39915 +86.1521 -3.29102 +85.5422 -3.20372 +84.9936 -3.25056 +84.8131 -3.09682 +84.6518 -2.92498 +84.7139 -2.70778 +84.9344 -2.41951 +84.5395 -1.91678 +84.1568 -1.92933 +83.8164 -2.26671 +83.3204 -2.25906 +82.8592 -2.28033 +82.4168 -2.10331 +81.8816 -1.84037 +81.4293 -1.57093 +81.032 -1.35101 +80.3612 -1.25898 +79.9668 -1.28969 +79.5208 -1.24133 +79.0219 -1.15593 +78.3544 -1.03266 +77.9372 -0.724926 +77.6381 -0.532779 +78.1321 -0.412019 +79.022 -0.334834 +79.7365 -0.403715 +80.53 -0.579743 +81.084 -0.760943 +81.8071 -0.895225 +82.4782 -0.914448 +82.9781 -0.930945 +83.4276 -0.936112 +84.3706 -1.03896 +85.2088 -1.1944 +85.9289 -1.39795 +87.0464 -1.4622 +87.9377 -1.49596 +88.659 -1.51403 +90.0546 -1.58832 +90.7826 -1.72732 +91.6118 -1.8804 +92.4502 -2.01859 +93.3968 -2.0376 +94.4012 -2.15891 +95.1315 -2.09807 +95.6052 -1.6493 +95.6245 -0.920633 +95.0142 -0.412069 +94.0101 -0.144715 +93.1187 -0.189432 +92.1155 -0.184855 +90.8904 -0.243803 +89.5533 -0.237599 +88.6615 -0.236242 +87.1578 -0.303836 +85.8783 -0.270527 +84.7623 -0.250566 +83.5943 -0.129718 +82.7553 0.0179645 +81.1995 0.260974 +80.5318 0.411907 +80.9183 0.658629 +82.1999 0.635839 +84.0376 0.771737 +86.0993 0.803398 +88.1648 0.84411 +89.609 0.65952 +91.2238 0.624693 +92.3389 0.58028 +94.4558 0.66607 +95.2629 0.660988 +95.5713 1.03034 +95.7391 1.81258 +95.4034 2.13092 +94.1247 2.06277 +92.2822 1.89953 +90.2776 1.75379 +88.6628 1.83331 +87.0464 1.86452 +85.2636 1.86765 +83.8709 1.82 +82.2554 1.79107 +81.0865 1.79007 +80.1157 1.74386 +80.1334 1.93887 +81.0811 2.23192 +82.7003 2.42892 +84.5395 2.65818 +86.0436 2.63221 +87.6047 2.63459 +88.7183 2.74889 +90.334 2.88772 +91.8931 2.83109 +93.0628 2.81122 +94.1236 2.69508 +94.8341 2.93287 +95.2499 3.48754 +95.0085 4.03008 +94.3443 4.37434 +92.8445 4.17146 +91.5055 4.02086 +90.1646 3.8803 +88.9421 3.6319 +87.1005 3.49 +85.9879 3.25387 +85.0421 3.24464 +83.7595 3.20743 +82.9798 3.14365 +81.8622 3.11751 +80.976 2.96988 +80.0621 2.84425 +81.0885 3.47024 +81.9378 3.6489 +82.4922 3.83974 +83.3647 4.27166 +84.0266 4.62188 +84.5386 4.82064 +84.9745 5.02323 +85.3698 4.81152 +85.7651 4.6058 +86.4328 4.548 +86.9687 4.59919 +87.0659 4.99771 +86.8618 5.24124 +86.6658 5.44818 +86.2668 5.6535 +87.1019 5.87851 +87.7698 5.99097 +88.3791 6.22568 +89.1112 6.4213 +89.7168 6.61037 +90.3558 6.91892 +90.7855 7.21441 +90.7737 7.54215 +90.5004 7.77089 +89.9933 7.79614 +89.2749 7.60375 +88.4356 7.44428 +87.8883 7.17135 +87.6597 7.26648 +87.2029 7.22145 +87.0047 6.8102 +86.7121 6.82344 +86.3262 6.82444 +86.3146 7.16477 +86.553 7.43624 +86.6073 7.89827 +86.212 8.04484 +85.7741 7.92294 +85.3727 7.71698 +85.159 7.26678 +84.9196 6.82769 +84.8213 6.48738 +84.4684 6.12775 +83.9911 5.79129 +83.5915 5.71275 +83.1381 5.56378 +82.4792 5.26258 +81.7937 4.96558 +81.1962 4.65765 +80.7362 4.6232 +80.4787 4.909 +80.08 4.82191 +79.4998 4.23189 +78.8931 3.72655 +78.3428 3.20188 +78.3092 3.71576 +77.9599 3.9784 +77.719 4.30016 +78.0395 4.91762 +78.4051 5.49132 +78.9135 6.40463 +79.4112 7.32762 +79.9172 8.16058 +80.4247 9.10461 +80.7546 9.775 +81.0854 10.3341 +81.5764 11.0636 +81.8685 11.6162 +81.754 12.1079 +81.3082 12.1171 +81.0363 11.8892 +80.568 11.2937 +80.1876 10.7835 +79.7582 9.99418 +79.3481 9.33988 +78.8698 8.71184 +78.3571 7.77085 +78.0088 7.05571 +77.5734 6.38028 +77.1178 5.71761 +76.8005 5.15005 +76.337 4.49448 +75.9919 4.03294 +75.994 4.26179 +75.9583 4.9314 +76.3466 5.60066 +76.8133 6.4246 +77.2997 7.32439 +77.9281 8.37226 +78.6042 9.37164 +79.0863 10.2193 +79.4958 10.9289 +79.856 11.5059 +80.1477 12.0564 +80.5155 12.8522 +80.861 13.2316 +81.1485 14.0724 +80.7678 14.5459 +80.3209 14.2254 +79.9206 13.6464 +79.6606 13.0853 +79.2478 12.395 +78.8736 11.7173 +78.4521 11.0659 +78.0784 10.2776 +77.7548 9.71539 +77.29 8.8348 +76.9343 8.3413 +76.7456 7.82355 +76.4154 7.32071 +75.9858 6.4719 +75.4055 5.70854 +74.8422 4.93221 +74.6119 4.49262 +74.3462 4.09592 +74.1215 4.37322 +74.1782 5.09694 +74.8469 5.98837 +75.4801 7.25591 +76.0283 8.0968 +76.7103 9.12227 +77.398 10.5616 +77.7939 11.4511 +78.3011 12.2833 +78.8654 13.1148 +79.2539 13.7846 +79.623 14.5733 +79.9541 15.4692 +80.3716 16.2507 +80.5987 16.9298 +80.0747 17.2511 +79.5869 16.7935 +79.1336 15.9618 +78.7511 15.1781 +78.3425 14.4076 +77.8659 13.3927 +77.4296 12.4389 +76.7817 11.4001 +76.3303 10.5669 +76.0301 9.87661 +75.4467 9.22674 +74.962 8.32609 +74.622 7.71632 +74.2949 6.98872 +73.7711 5.93905 +73.5375 5.33381 +73.2448 4.64053 +72.84 4.14617 +72.2613 4.19979 +72.1516 4.60385 +72.4467 5.32227 +72.8275 6.05278 +73.3687 6.80996 +74.1322 8.26793 +74.6116 9.3374 +75.1627 10.3982 +75.6426 11.3286 +76.0586 12.2348 +76.3405 12.7905 +76.8518 13.7323 +77.198 14.5048 +77.7446 15.4027 +78.1249 16.0761 +78.3535 16.5196 +78.687 16.9633 +78.637 17.4934 +78.067 17.5349 +77.669 17.2531 +77.3505 16.6867 +77.0095 16.1879 +76.6357 15.3447 +76.179 14.4034 +75.8572 13.8396 +75.458 13.0644 +74.8572 11.9994 +74.4823 11.2672 +74.0028 10.4494 +73.6473 9.65219 +73.242 8.87957 +72.7264 7.93995 +72.3241 7.16613 +71.8701 6.28093 +71.5224 5.58931 +71.194 4.91632 +70.6833 4.02852 +70.1796 3.41292 +69.7207 2.8571 +69.2136 2.86331 +68.7805 3.32243 +68.1988 3.80251 +67.6737 4.55604 +67.0607 5.11157 +66.5602 5.61566 +66.0439 6.04454 +65.542 6.65693 +65.0516 7.28061 +64.4886 7.83231 +63.8682 8.38166 +63.4806 8.82701 +62.6509 8.98197 +61.8701 8.71545 +61.5024 8.14539 +61.1667 7.58665 +60.7729 7.03534 +60.4889 6.53788 +60.1274 5.88575 +59.7446 5.45344 +59.5827 4.81796 +59.1301 4.26463 +58.8581 3.70411 +58.481 3.13902 +58.1724 2.71238 +57.7765 2.10247 +57.4722 1.52727 +57.0016 0.817253 +56.6784 0.198728 +56.354 -0.372287 +55.7403 -0.584321 +55.6175 -0.083565 +55.6389 0.638398 +55.8152 1.58658 +55.8485 2.64634 +56.0662 3.48261 +56.2021 4.3124 +56.5438 5.76862 +56.6148 7.00231 +56.7995 7.71535 +56.9572 8.59928 +57.0697 9.66596 +57.1411 10.4998 +57.2485 11.2812 +57.2209 12.0068 +57.2864 12.8427 +57.4071 13.621 +57.4292 14.4641 +57.1339 15.0174 +56.756 15.5683 +55.8035 15.7749 +55.1888 15.45 +54.702 14.9986 +54.3267 14.5244 +53.8733 13.8576 +53.4584 13.0049 +53.0047 12.3416 +52.5121 11.5011 +52.213 10.9564 +51.9035 10.2931 +51.5297 9.9067 +51.116 9.16314 +50.8362 8.55092 +50.4922 7.83421 +50.0078 7.21066 +49.7895 6.70805 +49.5116 5.97696 +49.1128 5.5406 +48.714 4.82213 +48.2439 4.27275 +47.9923 3.53879 +47.4039 2.74948 +47.1212 1.96748 +46.7692 1.35872 +46.3782 1.30907 +45.9053 1.69915 +45.869 2.64621 +45.9339 3.87182 +45.9591 5.37443 +46.0595 6.32305 +45.9919 7.60484 +45.8376 8.88829 +45.6288 9.94298 +45.6099 11.1148 +45.5345 12.0054 +45.5154 12.8441 +45.6385 13.8427 +45.5997 14.5682 +45.5452 15.6848 +44.9829 16.225 +44.0949 16.4052 +43.265 15.9555 +42.7019 15.2921 +42.1312 14.4089 +41.6672 13.5517 +41.1422 12.6737 +40.8033 12.008 +40.2677 11.2383 +40.065 10.5723 +39.4596 9.8392 +38.9891 8.98232 +38.3485 8.16589 +37.959 7.49736 +37.5209 6.76843 +37.0109 6.16027 +36.5893 5.31344 +36.0748 4.14867 +35.5462 3.32695 +35.0692 2.31194 +34.7339 1.6445 +34.1748 1.06472 +33.7977 1.14943 +33.2575 1.81321 +33.45 3.03618 +33.4054 4.20571 +33.4258 5.32202 +33.5421 6.21163 +33.5726 7.65692 +33.5749 8.77428 +33.5748 9.55367 +33.6373 10.5673 +33.3481 11.0118 +32.5488 11.5421 +31.6239 11.1543 +30.7264 10.6669 +30.2189 9.98657 +29.7357 9.15279 +29.1033 8.38725 +28.7121 7.72117 +28.0097 6.86454 +27.4493 6.31322 +26.9991 5.76595 +26.9828 5.33162 +26.5307 4.95098 +26.2086 5.19947 +25.7791 5.60628 +25.4568 6.09787 +25.4387 6.82499 +25.3458 7.54666 +25.3102 8.38349 +25.2393 9.03098 +24.8817 9.51595 +24.2058 9.77595 +23.3135 9.81943 +22.5903 9.86593 +21.923 9.90705 +21.0305 9.94285 +20.2505 9.89838 +19.6377 9.85003 +19.192 9.908 +18.4142 9.85643 +17.5764 9.83844 +17.075 9.81595 +16.6211 9.82152 +16.0157 10.2765 +15.1799 10.5993 +14.4367 10.6016 +13.8872 10.7675 +13.2852 10.9309 +12.7302 11.012 +11.6141 11.0355 +10.7226 11.136 +9.8908 11.0508 +9.16189 10.8441 +8.546 10.6847 +7.87413 10.4649 +7.2606 10.1765 +6.88074 9.77113 +6.31967 9.70218 +5.37599 9.91319 +4.87612 9.90665 +4.20608 9.92573 +3.48031 9.96736 +2.64828 9.91948 +1.81057 9.96115 +0.807282 9.9518 +-0.027855 9.8843 +-0.752081 9.88456 +-2.03146 9.91959 +-2.92476 9.94002 +-4.03895 9.95328 +-4.76318 9.9326 +-6.04626 9.97233 +-6.93586 9.86425 +-7.93863 9.90267 +-8.77428 9.8777 +-9.77663 9.89603 +-10.7798 9.94277 +-11.504 9.92638 +-12.674 9.91078 +-13.3982 10.0215 +-14.4013 9.93858 +-15.4048 10.0089 +-16.2957 9.88017 +-17.075 9.92469 +-17.6878 9.95143 +-18.5792 9.94126 +-19.4735 9.99813 +-20.473 9.89347 +-21.3647 9.96261 +-22.4783 9.9315 +-23.7045 9.86269 +-24.9858 9.89156 +-25.824 9.92438 +-26.601 9.82282 +-28.0498 9.77438 +-29.1627 9.80298 +-30.2777 9.8431 +-31.4481 9.89154 +-32.5623 9.92407 +-33.6219 9.91263 +-34.8464 9.81087 +-35.7935 9.85645 +-36.6291 9.83217 +-37.7433 9.89153 +-38.4675 9.89622 +-39.1943 9.85547 +-39.916 10.0103 +-40.8631 9.99673 +-41.5306 9.95644 +-42.2001 9.99526 +-42.9783 10.0222 +-43.7036 10.066 +-44.5399 10.1084 +-45.5427 10.0927 +-46.4897 10.1051 +-47.2697 10.1179 +-48.1033 10.1233 +-48.779 10.1864 +-49.9437 10.4296 +-50.7794 10.4231 +-52.395 10.4119 +-53.5649 10.3887 +-55.1809 10.3502 +-56.9064 10.2634 +-58.5243 10.1341 +-59.9715 10.2029 +-61.1414 10.2087 +-62.477 10.2043 +-63.2026 10.1565 +-64.2052 10.172 +-65.375 10.2146 +-67.0466 10.1996 +-68.1608 10.1552 +-68.885 10.1522 +-69.5549 10.1887 +-70.4451 10.1088 +-71.3353 10.1866 +-72.4492 10.2401 +-73.2861 10.2751 +-74.1225 10.2678 +-74.9017 10.3368 +-75.6816 10.3683 +-76.3494 10.3453 +-77.2972 10.3623 +-78.2443 10.3738 +-79.247 10.3957 +-80.3055 10.3897 +-81.5314 10.3962 +-82.59 10.3249 +-83.9799 10.4463 +-85.2635 10.4424 +-86.2662 10.3957 +-87.2688 10.4357 +-88.5506 10.4145 +-89.8321 10.3863 +-90.7782 10.4345 diff --git a/src/org/poly2tri/Poly2Tri.scala b/src/org/poly2tri/Poly2Tri.scala index ca4d006..a4c6bbb 100644 --- a/src/org/poly2tri/Poly2Tri.scala +++ b/src/org/poly2tri/Poly2Tri.scala @@ -87,7 +87,7 @@ class Poly2TriDemo extends BasicGame("Poly2Tri") { val i18 = "data/i.18" val tank = "data/tank.dat" - var currentModel = tank + var currentModel = nazcaHeron var doCDT = true var mouseButton = 0 @@ -378,12 +378,10 @@ class Poly2TriDemo extends BasicGame("Poly2Tri") { if(!drawEarClip) { // Sediel triangulation - seidel = new Triangulator(segments) - - val t1 = System.nanoTime - seidel.process - val runTime = System.nanoTime - t1 - + val t1 = System.nanoTime + seidel = new Triangulator(points) + val runTime = System.nanoTime - t1 + println("Poly2Tri average (ms) = " + runTime*1e-6) println("Number of triangles = " + seidel.polygons.size) diff --git a/src/org/poly2tri/cdt/CDT.scala b/src/org/poly2tri/cdt/CDT.scala index c30e60e..c593bba 100644 --- a/src/org/poly2tri/cdt/CDT.scala +++ b/src/org/poly2tri/cdt/CDT.scala @@ -75,7 +75,7 @@ object CDT { new CDT(sortedPoints, segments, iTriangle) } - // Create segments and connect end points; update edge event pointer + // Create segments and connect end points; update edge event pointer private def initSegments(points: ArrayBuffer[Point]): List[Segment] = { var segments = List[Segment]() for(i <- 0 until points.size-1) { @@ -127,20 +127,14 @@ class CDT(val points: List[Point], val segments: List[Segment], iTriangle: Trian private def sweep { for(i <- 1 until points.size) { - - try { val point = points(i) // Process Point event val node = pointEvent(point) if(i == CDT.clearPoint) {cleanTri = node.triangle; mesh.debug += cleanTri} // Process edge events point.edges.foreach(e => edgeEvent(e, node)) - } catch { - case e: Exception => - throw new Exception("Suspect point = " + i) - } - } + } // Final step in the sweep-line CDT algo @@ -176,7 +170,7 @@ class CDT(val points: List[Point], val segments: List[Segment], iTriangle: Trian // Locate the first intersected triangle val firstTriangle = node.triangle.locateFirst(edge) - + //if(firstTriangle != null)mesh.debug += firstTriangle // Remove intersected triangles if(firstTriangle != null && !firstTriangle.contains(edge)) { @@ -342,27 +336,28 @@ class CDT(val points: List[Point], val segments: List[Segment], iTriangle: Trian } // Scan left and right along AFront to fill holes - private def scanAFront(n: Node) { + private def scanAFront(n: Node) = { - var node = n.next + var node1 = n.next // Update right - if(node.next != null) { + if(node1.next != null) { var angle = 0.0 do { - angle = fill(node) - node = node.next - } while(angle <= PI_2 && node.next != null) + angle = fill(node1) + node1 = node1.next + } while(angle <= PI_2 && node1.next != null) } - node = n.prev + var node2 = n.prev // Update left - if(node.prev != null) { + if(node2.prev != null) { var angle = 0.0 do { - angle = fill(node) - node = node.prev - } while(angle <= PI_2 && node.prev != null) + angle = fill(node2) + node2 = node2.prev + } while(angle <= PI_2 && node2.prev != null) } + } // Fill empty space with a triangle diff --git a/src/org/poly2tri/seidel/Triangulator.scala b/src/org/poly2tri/seidel/Triangulator.scala index 466dc45..3de449b 100644 --- a/src/org/poly2tri/seidel/Triangulator.scala +++ b/src/org/poly2tri/seidel/Triangulator.scala @@ -39,15 +39,28 @@ import shapes.{Point, Segment, Trapezoid} // algorithm for computing trapezoidal decompositions and for triangulating polygons" // See also: "Computational Geometry", 3rd edition, by Mark de Berg et al, Chapter 6.2 // "Computational Geometry in C", 2nd edition, by Joseph O'Rourke -class Triangulator(segments: ArrayBuffer[Segment]) { +class Triangulator(points: ArrayBuffer[Point]) { // Convex polygon list var polygons = new ArrayBuffer[Array[Point]] // Order and randomize the segments - val segmentList = orderSegments + val segmentList = initSegments + + // The trapezoidal map + def trapezoidMap = trapezoidalMap.map + // Trapezoid decomposition list + var trapezoids = new ArrayBuffer[Trapezoid] + + // Initialize trapezoidal map and query structure + private val trapezoidalMap = new TrapezoidalMap + private val boundingBox = trapezoidalMap.boundingBox(segmentList) + private val queryGraph = new QueryGraph(Sink.init(boundingBox)) + private val xMonoPoly = new ArrayBuffer[MonotoneMountain] + + process // Build the trapezoidal map and query graph - def process { + private def process { var i = 0 while(i < segmentList.size) { @@ -117,11 +130,6 @@ class Triangulator(segments: ArrayBuffer[Segment]) { //println("# triangles = " + triangles.size) } - // The trapezoidal map - def trapezoidMap = trapezoidalMap.map - // Trapezoid decomposition list - var trapezoids = new ArrayBuffer[Trapezoid] - // Monotone polygons - these are monotone mountains def monoPolies: ArrayBuffer[ArrayBuffer[Point]] = { val polies = new ArrayBuffer[ArrayBuffer[Point]] @@ -130,12 +138,6 @@ class Triangulator(segments: ArrayBuffer[Segment]) { return polies } - // Initialize trapezoidal map and query structure - private val trapezoidalMap = new TrapezoidalMap - private val boundingBox = trapezoidalMap.boundingBox(segmentList) - private val queryGraph = new QueryGraph(Sink.init(boundingBox)) - private val xMonoPoly = new ArrayBuffer[MonotoneMountain] - // Build a list of x-monotone mountains private def createMountains { @@ -190,7 +192,17 @@ class Triangulator(segments: ArrayBuffer[Segment]) { } } - private def orderSegments = { + // Create segments and connect end points; update edge event pointer + private def initSegments: ArrayBuffer[Segment] = { + var segments = List[Segment]() + for(i <- 0 until points.size-1) + segments = new Segment(points(i), points(i+1)) :: segments + segments = new Segment(points.first, points.last) :: segments + orderSegments(segments) + } + + private def orderSegments(segments: List[Segment]) = { + // Ignore vertical segments! val segs = new ArrayBuffer[Segment] for(s <- segments) {