Skip to content

Commit 39a1683

Browse files
author
Jérôme Schneider / Net Gusto
committed
Working implementation
1 parent b66a3f2 commit 39a1683

File tree

7 files changed

+1142
-56
lines changed

7 files changed

+1142
-56
lines changed

cmd/test/main.go

Lines changed: 127 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,132 @@
11
package main
22

3-
import "log"
3+
import (
4+
"log"
5+
6+
"github.com/netgusto/poly2tri"
7+
)
48

59
func main() {
6-
log.Println("hello")
10+
contour := []*poly2tri.Point{
11+
// poly2tri.NewPoint(100, 100),
12+
// poly2tri.NewPoint(100, 300),
13+
// poly2tri.NewPoint(300, 300),
14+
// poly2tri.NewPoint(300, 100),
15+
poly2tri.NewPoint(280.35714, 648.79075),
16+
poly2tri.NewPoint(286.78571, 662.8979),
17+
poly2tri.NewPoint(263.28607, 661.17871),
18+
poly2tri.NewPoint(262.31092, 671.41548),
19+
poly2tri.NewPoint(250.53571, 677.00504),
20+
poly2tri.NewPoint(250.53571, 683.43361),
21+
poly2tri.NewPoint(256.42857, 685.21933),
22+
poly2tri.NewPoint(297.14286, 669.50504),
23+
poly2tri.NewPoint(289.28571, 649.50504),
24+
poly2tri.NewPoint(285.0, 631.6479),
25+
poly2tri.NewPoint(285.0, 608.79075),
26+
poly2tri.NewPoint(292.85714, 585.21932),
27+
poly2tri.NewPoint(306.42857, 563.79075),
28+
poly2tri.NewPoint(323.57143, 548.79075),
29+
poly2tri.NewPoint(339.28571, 545.21932),
30+
poly2tri.NewPoint(357.85714, 547.36218),
31+
poly2tri.NewPoint(375.0, 550.21932),
32+
poly2tri.NewPoint(391.42857, 568.07647),
33+
poly2tri.NewPoint(404.28571, 588.79075),
34+
poly2tri.NewPoint(413.57143, 612.36218),
35+
poly2tri.NewPoint(417.14286, 628.07647),
36+
poly2tri.NewPoint(438.57143, 619.1479),
37+
poly2tri.NewPoint(438.03572, 618.96932),
38+
poly2tri.NewPoint(437.5, 609.50504),
39+
poly2tri.NewPoint(426.96429, 609.86218),
40+
poly2tri.NewPoint(424.64286, 615.57647),
41+
poly2tri.NewPoint(419.82143, 615.04075),
42+
poly2tri.NewPoint(420.35714, 605.04075),
43+
poly2tri.NewPoint(428.39286, 598.43361),
44+
poly2tri.NewPoint(437.85714, 599.68361),
45+
poly2tri.NewPoint(443.57143, 613.79075),
46+
poly2tri.NewPoint(450.71429, 610.21933),
47+
poly2tri.NewPoint(431.42857, 575.21932),
48+
poly2tri.NewPoint(405.71429, 550.21932),
49+
poly2tri.NewPoint(372.85714, 534.50504),
50+
poly2tri.NewPoint(349.28571, 531.6479),
51+
poly2tri.NewPoint(346.42857, 521.6479),
52+
poly2tri.NewPoint(346.42857, 511.6479),
53+
poly2tri.NewPoint(350.71429, 496.6479),
54+
poly2tri.NewPoint(367.85714, 476.6479),
55+
poly2tri.NewPoint(377.14286, 460.93361),
56+
poly2tri.NewPoint(385.71429, 445.21932),
57+
poly2tri.NewPoint(388.57143, 404.50504),
58+
poly2tri.NewPoint(360.0, 352.36218),
59+
poly2tri.NewPoint(337.14286, 325.93361),
60+
poly2tri.NewPoint(330.71429, 334.50504),
61+
poly2tri.NewPoint(347.14286, 354.50504),
62+
poly2tri.NewPoint(337.85714, 370.21932),
63+
poly2tri.NewPoint(333.57143, 359.50504),
64+
poly2tri.NewPoint(319.28571, 353.07647),
65+
poly2tri.NewPoint(312.85714, 366.6479),
66+
poly2tri.NewPoint(350.71429, 387.36218),
67+
poly2tri.NewPoint(368.57143, 408.07647),
68+
poly2tri.NewPoint(375.71429, 431.6479),
69+
poly2tri.NewPoint(372.14286, 454.50504),
70+
poly2tri.NewPoint(366.42857, 462.36218),
71+
poly2tri.NewPoint(352.85714, 462.36218),
72+
poly2tri.NewPoint(336.42857, 456.6479),
73+
poly2tri.NewPoint(332.85714, 438.79075),
74+
poly2tri.NewPoint(338.57143, 423.79075),
75+
poly2tri.NewPoint(338.57143, 411.6479),
76+
poly2tri.NewPoint(327.85714, 405.93361),
77+
poly2tri.NewPoint(320.71429, 407.36218),
78+
poly2tri.NewPoint(315.71429, 423.07647),
79+
poly2tri.NewPoint(314.28571, 440.21932),
80+
poly2tri.NewPoint(325.0, 447.71932),
81+
poly2tri.NewPoint(324.82143, 460.93361),
82+
poly2tri.NewPoint(317.85714, 470.57647),
83+
poly2tri.NewPoint(304.28571, 483.79075),
84+
poly2tri.NewPoint(287.14286, 491.29075),
85+
poly2tri.NewPoint(263.03571, 498.61218),
86+
poly2tri.NewPoint(251.60714, 503.07647),
87+
poly2tri.NewPoint(251.25, 533.61218),
88+
poly2tri.NewPoint(260.71429, 533.61218),
89+
poly2tri.NewPoint(272.85714, 528.43361),
90+
poly2tri.NewPoint(286.07143, 518.61218),
91+
poly2tri.NewPoint(297.32143, 508.25504),
92+
poly2tri.NewPoint(297.85714, 507.36218),
93+
poly2tri.NewPoint(298.39286, 506.46932),
94+
poly2tri.NewPoint(307.14286, 496.6479),
95+
poly2tri.NewPoint(312.67857, 491.6479),
96+
poly2tri.NewPoint(317.32143, 503.07647),
97+
poly2tri.NewPoint(322.5, 514.1479),
98+
poly2tri.NewPoint(325.53571, 521.11218),
99+
poly2tri.NewPoint(327.14286, 525.75504),
100+
poly2tri.NewPoint(326.96429, 535.04075),
101+
poly2tri.NewPoint(311.78571, 540.04075),
102+
poly2tri.NewPoint(291.07143, 552.71932),
103+
poly2tri.NewPoint(274.82143, 568.43361),
104+
poly2tri.NewPoint(259.10714, 592.8979),
105+
poly2tri.NewPoint(254.28571, 604.50504),
106+
poly2tri.NewPoint(251.07143, 621.11218),
107+
poly2tri.NewPoint(250.53571, 649.1479),
108+
poly2tri.NewPoint(268.1955, 654.36208),
109+
}
110+
111+
swctx := poly2tri.NewSweepContext(contour, false)
112+
swctx.AddHole([]*poly2tri.Point{
113+
poly2tri.NewPoint(325, 437),
114+
poly2tri.NewPoint(320, 423),
115+
poly2tri.NewPoint(329, 413),
116+
poly2tri.NewPoint(332, 423),
117+
})
118+
119+
swctx.AddHole([]*poly2tri.Point{
120+
poly2tri.NewPoint(320.72342, 480),
121+
poly2tri.NewPoint(338.90617, 465.96863),
122+
poly2tri.NewPoint(347.99754, 480.61584),
123+
poly2tri.NewPoint(329.8148, 510.41534),
124+
poly2tri.NewPoint(339.91632, 480.11077),
125+
poly2tri.NewPoint(334.86556, 478.09046),
126+
})
127+
128+
swctx.Triangulate()
129+
triangles := swctx.GetTriangles()
130+
131+
log.Println("hello", triangles)
7132
}

edge.go

Lines changed: 0 additions & 35 deletions
This file was deleted.

point.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,3 +122,9 @@ func PointEquals(a, b *Point) bool {
122122
func PointDot(a, b XYInterface) float64 {
123123
return a.GetX()*b.GetX() + a.GetY()*b.GetY()
124124
}
125+
126+
type SortablePointsCollection []*Point
127+
128+
func (c SortablePointsCollection) Len() int { return len(c) }
129+
func (c SortablePointsCollection) Swap(i, j int) { c[i], c[j] = c[j], c[i] }
130+
func (c SortablePointsCollection) Less(i, j int) bool { return XYCompare(c[i], c[j]) < 0 }

0 commit comments

Comments
 (0)