├── .gitignore
├── LICENSE
├── Package.swift
├── README.md
├── Readme
├── cheese_example.svg
├── eagle_centroid.svg
├── eagle_tessellation.svg
├── instruction_1.png
├── instruction_2.png
├── star_polygon.svg
└── star_triangle.svg
├── Sources
└── iTriangle
│ ├── Delaunay
│ ├── Array3d.swift
│ ├── DTriangle.swift
│ ├── DVertex.swift
│ ├── Delaunay+Convex.swift
│ ├── Delaunay.swift
│ ├── IndexBuffer.swift
│ └── Shape+Delaunay.swift
│ ├── Int.swift
│ ├── Monotone
│ ├── MNavNode.swift
│ ├── MPoly.swift
│ ├── MSliceBuffer.swift
│ ├── Shape+mLayout.swift
│ └── Shape+nLayout.swift
│ └── Triangulate
│ ├── CGShape+Triangulate.swift
│ ├── CGTriangulation.swift
│ ├── Shape+Triangulate.swift
│ └── Triangulation.swift
└── Tests
└── iTriangleTests
├── ReadmeTests.swift
├── Triangulation
├── triangle_test_0.json
├── triangle_test_1.json
├── triangle_test_10.json
├── triangle_test_11.json
├── triangle_test_12.json
├── triangle_test_13.json
├── triangle_test_14.json
├── triangle_test_15.json
├── triangle_test_16.json
├── triangle_test_17.json
├── triangle_test_18.json
├── triangle_test_19.json
├── triangle_test_2.json
├── triangle_test_20.json
├── triangle_test_21.json
├── triangle_test_22.json
├── triangle_test_23.json
├── triangle_test_24.json
├── triangle_test_25.json
├── triangle_test_26.json
├── triangle_test_27.json
├── triangle_test_28.json
├── triangle_test_29.json
├── triangle_test_3.json
├── triangle_test_30.json
├── triangle_test_31.json
├── triangle_test_32.json
├── triangle_test_33.json
├── triangle_test_34.json
├── triangle_test_35.json
├── triangle_test_36.json
├── triangle_test_37.json
├── triangle_test_38.json
├── triangle_test_39.json
├── triangle_test_4.json
├── triangle_test_40.json
├── triangle_test_41.json
├── triangle_test_42.json
├── triangle_test_43.json
├── triangle_test_44.json
├── triangle_test_45.json
├── triangle_test_46.json
├── triangle_test_47.json
├── triangle_test_48.json
├── triangle_test_49.json
├── triangle_test_5.json
├── triangle_test_50.json
├── triangle_test_51.json
├── triangle_test_52.json
├── triangle_test_53.json
├── triangle_test_54.json
├── triangle_test_55.json
├── triangle_test_56.json
├── triangle_test_57.json
├── triangle_test_58.json
├── triangle_test_59.json
├── triangle_test_6.json
├── triangle_test_60.json
├── triangle_test_61.json
├── triangle_test_62.json
├── triangle_test_63.json
├── triangle_test_64.json
├── triangle_test_65.json
├── triangle_test_66.json
├── triangle_test_67.json
├── triangle_test_68.json
├── triangle_test_69.json
├── triangle_test_7.json
├── triangle_test_70.json
├── triangle_test_71.json
├── triangle_test_72.json
├── triangle_test_8.json
└── triangle_test_9.json
├── TriangulationTestBank.swift
├── iConvexTests.swift
└── iTriangleTests.swift
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | Package.resolved
3 | /.build
4 | /Packages
5 | /*.xcodeproj
6 | xcuserdata/
7 | DerivedData/
8 | /.swiftpm
9 | .netrc
10 |
11 | # IntelliJ IDEA specific
12 | .idea/
13 | *.iml
14 |
15 | # Visual Studio Code specific
16 | .vscode/
17 |
18 | # macOS system files
19 | .DS_Store
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 iShape-Swift
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Package.swift:
--------------------------------------------------------------------------------
1 | // swift-tools-version: 5.8
2 | // The swift-tools-version declares the minimum version of Swift required to build this package.
3 |
4 | import PackageDescription
5 |
6 | let package = Package(
7 | name: "iTriangle",
8 | products: [
9 | // Products define the executables and libraries a package produces, and make them visible to other packages.
10 | .library(
11 | name: "iTriangle",
12 | targets: ["iTriangle"]),
13 | ],
14 | dependencies: [
15 | // Dependencies declare other packages that this package depends on.
16 | .package(url: "https://github.com/iShape-Swift/iFixFloat", .upToNextMajor(from: "1.9.0")),
17 | .package(url: "https://github.com/iShape-Swift/iShape", .upToNextMajor(from: "1.13.0")),
18 | .package(url: "https://github.com/iShape-Swift/iOverlay", .upToNextMajor(from: "1.22.0"))
19 | // .package(path: "../iFixFloat"),
20 | // .package(path: "../iShape"),
21 | // .package(path: "../iOverlay")
22 | ],
23 | targets: [
24 | // Targets are the basic building blocks of a package. A target can define a module or a test suite.
25 | // Targets can depend on other targets in this package, and on products in packages this package depends on.
26 | .target(
27 | name: "iTriangle",
28 | dependencies: ["iFixFloat", "iShape", "iOverlay"]),
29 | .testTarget(
30 | name: "iTriangleTests",
31 | dependencies: ["iTriangle"],
32 | resources: [
33 | .process("Triangulation")
34 | ]
35 | ),
36 | ]
37 | )
38 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # iTriangle
2 | A fast and efficient library for Delaunay triangulation and converting complex polygons into convex shapes, including advanced self-intersection resolution.
3 |
4 | ## Delaunay triangulation
5 |
6 |
7 |
8 |
9 | ## Breaking into convex polygons
10 |
11 |
12 |
13 |
14 | ## Features
15 |
16 | - **Delaunay Triangulation**: *Efficient and robust implementation for generating Delaunay triangulations.*
17 | - **Convex Polygons**: *Break complex polygons into simpler convex polygons.*
18 | - **Self-Intersection**: *Smart intersection resolution with Even-Odd or Non-Zero rules.*
19 |
20 | ## Documentation
21 | - [Delaunay](https://ishape-rust.github.io/iShape-js/triangle/delaunay.html)
22 |
23 | ## Basic Usage
24 |
25 | Add imports:
26 | ```swift
27 | import iTriangle
28 | ```
29 |
30 | After that, represent your polygon as an array of vertices. Here's an example of a cheese polygon:
31 |
32 |
33 |
34 |
35 | ```swift
36 | let shape = [
37 | // body
38 | [
39 | CGPoint(x: 0, y: 20), // 0
40 | CGPoint(x: 8, y: 10), // 1
41 | CGPoint(x: 7, y: 6), // 2
42 | CGPoint(x: 9, y: 1), // 3
43 | CGPoint(x: 13, y: -1), // 4
44 | CGPoint(x: 17, y: 1), // 5
45 | CGPoint(x: 26, y: -7), // 6
46 | CGPoint(x: 14, y: -15), // 7
47 | CGPoint(x: 0, y: -18), // 8
48 | CGPoint(x: -14, y: -15), // 9
49 | CGPoint(x: -25, y: -7), // 10
50 | CGPoint(x: -18, y: 0), // 11
51 | CGPoint(x: -16, y: -3), // 12
52 | CGPoint(x: -13, y: -4), // 13
53 | CGPoint(x: -8, y: -2), // 14
54 | CGPoint(x: -6, y: 2), // 15
55 | CGPoint(x: -7, y: 6), // 16
56 | CGPoint(x: -10, y: 8) // 17
57 | ],
58 | // hole
59 | [
60 | CGPoint(x: 2, y: 0), // 18
61 | CGPoint(x: -2, y: -2), // 19
62 | CGPoint(x: -4, y: -5), // 20
63 | CGPoint(x: -2, y: -9), // 21
64 | CGPoint(x: 2, y: -11), // 22
65 | CGPoint(x: 5, y: -9), // 23
66 | CGPoint(x: 7, y: -5), // 24
67 | CGPoint(x: 5, y: -2) // 25
68 | ]
69 | ]
70 |
71 | let triangulation = shape.triangulate()
72 |
73 | print("points: \(triangulation.points)")
74 | print("indices: \(triangulation.indices)")
75 | ```
76 | **Output Triangulation**: *triangles indices and vertices, where all triangles oriented in a clockwise direction.*
77 |
78 | ## Installation
79 |
80 | ### [Package Manager](https://swift.org/package-manager/)
81 |
82 |
83 | Add the following to your `Package.swift`:
84 | ```swift
85 | let package = Package(
86 | name: "[your name]",
87 | products: [
88 | dependencies: [
89 | .package(url: "https://github.com/iShape-Swift/iTriangle", from: "1.11.0")
90 | ],
91 | targets: [
92 | .target(
93 | name: "[your target]",
94 | dependencies: ["iTriangle"])
95 | ]
96 | ]
97 | )
98 | ```
99 | Or add it directly through .xcodeproj
100 |
101 | 
102 |
103 |
104 |
105 |
106 | In Searchbar add https://github.com/iShape-Swift/iTriangle
107 |
108 | 
109 |
--------------------------------------------------------------------------------
/Readme/instruction_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iShape-Swift/iTriangle/08509ee0f096131f116cb40ce4e4bb471d1431eb/Readme/instruction_1.png
--------------------------------------------------------------------------------
/Readme/instruction_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iShape-Swift/iTriangle/08509ee0f096131f116cb40ce4e4bb471d1431eb/Readme/instruction_2.png
--------------------------------------------------------------------------------
/Sources/iTriangle/Delaunay/Array3d.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Array3d.swift
3 | //
4 | //
5 | // Created by Nail Sharipov on 08.06.2023.
6 | //
7 |
8 | @usableFromInline
9 | struct Array3d {
10 |
11 | @usableFromInline
12 | var a: T
13 |
14 | @usableFromInline
15 | var b: T
16 |
17 | @usableFromInline
18 | var c: T
19 |
20 | @inlinable
21 | init (_ a: T, _ b: T, _ c: T) {
22 | self.a = a
23 | self.b = b
24 | self.c = c
25 | }
26 |
27 | @inlinable
28 | subscript(index: Int) -> T {
29 | get {
30 | switch index {
31 | case 0:
32 | return a
33 | case 1:
34 | return b
35 | default:
36 | return c
37 | }
38 | }
39 | set {
40 | switch index {
41 | case 0:
42 | a = newValue
43 | case 1:
44 | b = newValue
45 | default:
46 | c = newValue
47 | }
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/Sources/iTriangle/Delaunay/DTriangle.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DTriangle.swift
3 | //
4 | //
5 | // Created by Nail Sharipov on 08.06.2023.
6 | //
7 |
8 | import iFixFloat
9 | import iShape
10 |
11 | // a -> b -> c is always clock wise oriented
12 |
13 | @usableFromInline
14 | struct DTriangle {
15 |
16 | @usableFromInline
17 | let index: Int
18 |
19 | @usableFromInline
20 | // a(0), b(1), c(2)
21 | var vertices: Array3d
22 |
23 | @usableFromInline
24 | // BC - a(0), AC - b(1), AB - c(2)
25 | var neighbors: Array3d
26 |
27 | @inlinable
28 | init() {
29 | self.index = .empty
30 | self.vertices = Array3d(.empty, .empty, .empty)
31 | self.neighbors = Array3d(.empty, .empty, .empty)
32 | }
33 |
34 | @inlinable
35 | init(index: Int, a: DVertex, b: DVertex, c: DVertex) {
36 | self.index = index
37 | self.vertices = Array3d(a, b, c)
38 | self.neighbors = Array3d(.empty, .empty, .empty)
39 | assert(Triangle.isCW_or_Line(p0: a.point, p1: b.point, p2: c.point), "Triangle's points are not clock-wise ordered")
40 | }
41 |
42 | @inlinable
43 | init(index: Int, a: DVertex, b: DVertex, c: DVertex, bc: Int, ac: Int, ab: Int) {
44 | self.index = index
45 | self.vertices = Array3d(a, b, c)
46 | self.neighbors = Array3d(bc, ac, ab)
47 | assert(Triangle.isCW_or_Line(p0: a.point, p1: b.point, p2: c.point), "Triangle's points are not clock-wise ordered")
48 | }
49 |
50 | @inlinable
51 | func opposite(neighbor: Int) -> Int {
52 | if neighbors.a == neighbor {
53 | return 0
54 | } else if neighbors.b == neighbor {
55 | return 1
56 | } else if neighbors.c == neighbor {
57 | return 2
58 | }
59 | assertionFailure("Neighbor is not present")
60 |
61 | return .empty
62 | }
63 |
64 | @inlinable
65 | func neighbor(vertex: Int) -> Int {
66 | if vertices.a.index == vertex {
67 | return self.neighbors.a
68 | } else if vertices.b.index == vertex {
69 | return self.neighbors.b
70 | } else if vertices.c.index == vertex {
71 | return self.neighbors.c
72 | }
73 |
74 | assertionFailure("Point is not present")
75 |
76 | return .empty
77 | }
78 |
79 | @inlinable
80 | mutating func updateOpposite(oldNeighbor: Int, newNeighbor: Int) {
81 | let index = self.opposite(neighbor: oldNeighbor)
82 | self.neighbors[index] = newNeighbor
83 | }
84 |
85 | }
86 |
--------------------------------------------------------------------------------
/Sources/iTriangle/Delaunay/DVertex.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DVertex.swift
3 | //
4 | //
5 | // Created by Nail Sharipov on 08.06.2023.
6 | //
7 |
8 | import iFixFloat
9 |
10 | public enum DVType {
11 |
12 | case origin
13 | case extraPath
14 | case extraInner
15 | case extraTessellated
16 |
17 | @inlinable
18 | public var isPath: Bool {
19 | self == .origin || self == .extraPath
20 | }
21 | }
22 |
23 | public struct DVertex {
24 |
25 | public static let empty = DVertex(index: .empty, point: .zero, type: .origin)
26 |
27 | public let index: Int
28 | public let point: Point
29 | public let type: DVType
30 |
31 | @inlinable
32 | public init(index: Int, point: Point, type: DVType) {
33 | self.index = index
34 | self.point = point
35 | self.type = type
36 | }
37 |
38 | }
39 |
--------------------------------------------------------------------------------
/Sources/iTriangle/Delaunay/IndexBuffer.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IndexBuffer.swift
3 | //
4 | //
5 | // Created by Nail Sharipov on 08.06.2023.
6 | //
7 |
8 | struct IndexBuffer {
9 |
10 | private struct Link {
11 | static let empty = Link(empty: true, next: -1)
12 | let empty: Bool
13 | var next: Int
14 | }
15 |
16 | private var array: [Link]
17 | private var first: Int
18 |
19 | init(count: Int) {
20 | guard count > 0 else {
21 | self.array = []
22 | self.first = -1
23 | return
24 | }
25 | self.first = 0
26 | self.array = [Link](repeating: .empty, count: count)
27 | for i in 0..= 0 }
35 |
36 | @inline(__always)
37 | mutating func next() -> Int {
38 | let index = first
39 | first = array[index].next
40 |
41 | array[index] = .empty
42 |
43 | return index
44 | }
45 |
46 | @inline(__always)
47 | mutating func add(index: Int) {
48 | let isOverflow = index >= self.array.count
49 | if isOverflow || self.array[index].empty {
50 | if isOverflow {
51 | let n = index - self.array.count
52 | for _ in 0...n {
53 | self.array.append(.empty)
54 | }
55 | }
56 | array[index] = Link(empty: false, next: first)
57 |
58 | first = index
59 | }
60 | }
61 |
62 | }
63 |
--------------------------------------------------------------------------------
/Sources/iTriangle/Int.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Int.swift
3 | //
4 | //
5 | // Created by Nail Sharipov on 10.07.2023.
6 | //
7 |
8 | extension Int {
9 |
10 | @usableFromInline
11 | static let empty = -1
12 |
13 | @inlinable
14 | func next(_ n: Int) -> Int {
15 | let x = self + 1
16 | return x == n ? 0 : x
17 | }
18 |
19 | @inlinable
20 | func prev(_ n: Int) -> Int {
21 | let x = self - 1
22 | return x < 0 ? (n - 1) : x
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/Sources/iTriangle/Monotone/MPoly.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MPoly.swift
3 | //
4 | //
5 | // Created by Nail Sharipov on 02.06.2023.
6 | //
7 |
8 | struct MPoly {
9 |
10 | var next: Int
11 | var prev: Int
12 |
13 | @inlinable
14 | init(start: Int) {
15 | next = start
16 | prev = start
17 | }
18 |
19 | @inlinable
20 | init(next: Int, prev: Int) {
21 | self.next = next
22 | self.prev = prev
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/Sources/iTriangle/Monotone/MSliceBuffer.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MSliceBuffer.swift
3 | //
4 | //
5 | // Created by Nail Sharipov on 08.06.2023.
6 | //
7 |
8 | import iFixFloat
9 |
10 | @usableFromInline
11 | struct MSlice {
12 |
13 | @usableFromInline
14 | let a: Int
15 |
16 | @usableFromInline
17 | let b: Int
18 |
19 | @inlinable
20 | init(a: Int, b: Int) {
21 | self.a = a
22 | self.b = b
23 | }
24 | }
25 |
26 | private struct Edge {
27 |
28 | static let empty = Edge(id: 0, edge: .empty, triangle: .empty)
29 |
30 | let id: Int
31 | var edge: Int
32 | var triangle: Int
33 |
34 | var isEmpty: Bool { triangle == .empty }
35 | }
36 |
37 | struct MSliceBuffer {
38 |
39 | private let vertexCount: Int
40 | private var edges: [Edge]
41 | private let vertexMarks: [Bool]
42 |
43 | private static func id(n: Int, a: Int, b: Int) -> Int {
44 | if a < b {
45 | a * n + b
46 | } else {
47 | b * n + a
48 | }
49 | }
50 |
51 | init(vertexCount: Int, slices: [MSlice]) {
52 | self.vertexCount = vertexCount
53 | var vertexMark = Array(repeating: false, count: vertexCount)
54 | var edges = Array(repeating: .empty, count: slices.count)
55 | for i in 0..= 0 {
87 | var edge = self.edges[edgeIndex]
88 |
89 | if edge.isEmpty {
90 | edge.triangle = i
91 | edge.edge = j0
92 | self.edges[edgeIndex] = edge
93 | } else {
94 | triangle.neighbors[j0] = edge.triangle
95 | var neighbor = triangles[edge.triangle]
96 | neighbor.neighbors[edge.edge] = i
97 | triangles[edge.triangle] = neighbor
98 | triangles[i] = triangle
99 | }
100 | }
101 |
102 | j0 = j1
103 | j1 = j2
104 | }
105 | }
106 | }
107 |
108 | private func find(a: Int, b: Int) -> Int {
109 | guard self.vertexMarks[a] && self.vertexMarks[b] else {
110 | return .empty
111 | }
112 |
113 | let id = Self.id(n: self.vertexCount, a: a, b: b)
114 |
115 | var left = 0
116 | var right = self.edges.count &- 1
117 |
118 | repeat {
119 | let k: Int
120 | if left &+ 1 < right {
121 | k = (left &+ right) >> 1
122 | } else {
123 | repeat {
124 | if self.edges[left].id == id {
125 | return left
126 | }
127 | left &+= 1
128 | } while left <= right
129 | return -1
130 | }
131 |
132 | let e = self.edges[k].id
133 | if e > id {
134 | right = k
135 | } else if e < id {
136 | left = k
137 | } else {
138 | return k
139 | }
140 | } while true
141 | }
142 | }
143 |
--------------------------------------------------------------------------------
/Sources/iTriangle/Monotone/Shape+nLayout.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Shape+nLayout.swift
3 | //
4 | //
5 | // Created by Nail Sharipov on 01.06.2023.
6 | //
7 |
8 | import iFixFloat
9 | import iShape
10 |
11 | @usableFromInline
12 | enum MNodeType: Int {
13 | case end
14 | case start
15 | case merge
16 | case split
17 | }
18 |
19 | @usableFromInline
20 | struct MSpecialNode {
21 |
22 | @usableFromInline
23 | static let empty = MSpecialNode(index: .empty, type: .start, sort: .zero)
24 |
25 | @usableFromInline
26 | let type: MNodeType
27 |
28 | @usableFromInline
29 | let index: Int
30 |
31 | @usableFromInline
32 | let sort: BitPack
33 |
34 | @inlinable
35 | init(index: Int, type: MNodeType, sort: BitPack) {
36 | self.index = index
37 | self.type = type
38 | self.sort = sort
39 | }
40 | }
41 |
42 | @usableFromInline
43 | struct NodeLayout {
44 |
45 | @usableFromInline
46 | let navNodes: [MNavNode]
47 |
48 | @usableFromInline
49 | let specNodes: [MSpecialNode]
50 |
51 | @inlinable
52 | init(verts: [MNavNode], nodes: [MSpecialNode]) {
53 | self.navNodes = verts
54 | self.specNodes = nodes
55 | }
56 | }
57 |
58 | extension Shape {
59 |
60 | @inlinable
61 | var nLayout: NodeLayout {
62 | var n = 0
63 | for path in self {
64 | n += path.count
65 | }
66 |
67 | var verts = [MNavNode](repeating: .empty, count: n)
68 | var nodes = [MSpecialNode]()
69 |
70 | var s = 0
71 | for j in 0.. b1 && b1 < b2
94 | let c1 = b0 < b1 && b1 > b2
95 |
96 | if c0 || c1 {
97 | let isCW = Triangle.isClockwise(p0: p0, p1: p1, p2: p2)
98 | let type: MNodeType = c0 ? (isCW ? .start : .split) : (isCW ? .end : .merge)
99 | nodes.append(MSpecialNode(index: i, type: type, sort: b1))
100 | }
101 |
102 | verts[i] = MNavNode(next: i2 + s, index: i, prev: i0 + s, vert: DVertex(index: i, point: p1, type: .origin))
103 |
104 | i0 = i1
105 | i1 = i2
106 |
107 | p0 = p1
108 | p1 = p2
109 | }
110 |
111 | s += path.count
112 | }
113 |
114 | nodes.sort(by: {
115 | if $0.sort != $1.sort {
116 | return $0.sort < $1.sort
117 | } else {
118 | return $0.type.rawValue < $1.type.rawValue
119 | }
120 | })
121 |
122 | return NodeLayout(verts: verts, nodes: nodes)
123 | }
124 | }
125 |
--------------------------------------------------------------------------------
/Sources/iTriangle/Triangulate/CGShape+Triangulate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CGShape+Triangulate.swift
3 | //
4 | //
5 | // Created by Nail Sharipov on 13.04.2024.
6 | //
7 |
8 | #if canImport(CoreGraphics)
9 | import CoreGraphics
10 | import iOverlay
11 | import iShape
12 | import iFixFloat
13 |
14 | public extension CGShape {
15 |
16 | /// Triangulates the shape.
17 | ///
18 | /// If `validateRule` is provided, the shape will be processed using the poly bool library to ensure correctness
19 | /// according to the specified fill rule. If `validateRule` is `nil`, the shape is assumed to be "correct" and
20 | /// will be triangulated as is.
21 | ///
22 | /// For more details on the poly bool library: [iOverlay Documentation](https://ishape-rust.github.io/iShape-js/overlay/filling_rules.html)
23 | ///
24 | /// - Parameters:
25 | /// - validateRule: An optional `FillRule` to validate and fix the shape. Defaults to `.nonZero`.
26 | /// - minArea: The minimum area to consider for a shape. Defaults to `0`.
27 | /// - Returns: A `CGTriangulation` instance representing the triangulated shape.
28 | func triangulate(validateRule: FillRule? = .nonZero, minArea: CGFloat = 0) -> CGTriangulation {
29 | guard let rect = CGRect(shape: self) else {
30 | return CGTriangulation(points: [], indices: [])
31 | }
32 |
33 | let adapter = PointAdapter(rect: rect)
34 | let shape = self.toShape(adapter: adapter)
35 | let sqrScale = adapter.dirScale * adapter.dirScale
36 | let iArea = Int64(sqrScale * minArea)
37 |
38 | let triangulation = shape.triangulate(validateRule: validateRule, minArea: iArea)
39 |
40 | let points = triangulation.points.map({ adapter.convert(point: $0) })
41 |
42 | return CGTriangulation(points: points, indices: triangulation.indices)
43 | }
44 |
45 | /// Decomposes the shape into convex polygons.
46 | ///
47 | /// Similar to `triangulate`, if `validateRule` is provided, the shape undergoes a fixing process using the poly
48 | /// bool library according to the specified fill rule. If `validateRule` is `nil`, the shape is treated as "correct"
49 | /// and decomposed directly into convex polygons.
50 | ///
51 | /// For more details on the poly bool library: [iOverlay Documentation](https://ishape-rust.github.io/iShape-js/overlay/filling_rules.html)
52 | ///
53 | /// - Parameters:
54 | /// - validateRule: An optional `FillRule` to validate and fix the shape. Defaults to `.nonZero`.
55 | /// - minArea: The minimum area to consider for a shape. Defaults to `0`.
56 | /// - Returns: An array of path representing the decomposed convex polygons.
57 | func decomposeToConvexPolygons(validateRule: FillRule? = .nonZero, minArea: CGFloat = 0) -> [[CGPoint]] {
58 | guard let rect = CGRect(shape: self) else {
59 | return []
60 | }
61 |
62 | let adapter = PointAdapter(rect: rect)
63 | let shape = self.toShape(adapter: adapter)
64 | let sqrScale = adapter.dirScale * adapter.dirScale
65 | let iArea = Int64(sqrScale * minArea)
66 |
67 | let polygons = shape.decomposeToConvexPolygons(validateRule: validateRule, minArea: iArea)
68 |
69 | return polygons.toCGShape(adapter: adapter)
70 | }
71 |
72 | }
73 |
74 | #endif
75 |
--------------------------------------------------------------------------------
/Sources/iTriangle/Triangulate/CGTriangulation.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CGTriangulation.swift
3 | //
4 | //
5 | // Created by Nail Sharipov on 19.04.2024.
6 | //
7 |
8 | #if canImport(CoreGraphics)
9 | import CoreGraphics
10 |
11 | public struct CGTriangulation {
12 |
13 | public let points: [CGPoint]
14 | public let indices: [Int]
15 |
16 | }
17 | #endif
18 |
--------------------------------------------------------------------------------
/Sources/iTriangle/Triangulate/Shape+Triangulate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Shape+Triangulate.swift
3 | //
4 | //
5 | // Created by Nail Sharipov on 10.07.2023.
6 | //
7 |
8 | import iFixFloat
9 | import iShape
10 | import iOverlay
11 |
12 | public extension Shape {
13 |
14 | /// Triangulates the shape.
15 | ///
16 | /// If `validateRule` is provided, the shape will be processed using the poly bool library to ensure correctness
17 | /// according to the specified fill rule. If `validateRule` is `nil`, the shape is assumed to be "correct" and
18 | /// will be triangulated as is.
19 | ///
20 | /// For more details on the poly bool library: [iOverlay Documentation](https://ishape-rust.github.io/iShape-js/overlay/filling_rules.html)
21 | ///
22 | /// - Parameters:
23 | /// - validateRule: An optional `FillRule` to validate and fix the shape. Defaults to `.nonZero`.
24 | /// - minArea: The minimum area to consider for a shape. Defaults to `0`.
25 | /// - Returns: A `Triangulation` instance representing the triangulated shape.
26 | func triangulate(validateRule: FillRule? = .nonZero, minArea: Int64 = 0) -> Triangulation {
27 | guard let fillRule = validateRule else {
28 | if let delaunay = self.delaunay() {
29 | return delaunay.triangulation()
30 | } else {
31 | return Triangulation(points: [], indices: [])
32 | }
33 | }
34 |
35 | let shapes = self.simplify(fillRule: fillRule, minArea: minArea)
36 |
37 | let delaunayList = shapes.delaunay()
38 |
39 | var points = [Point]()
40 | var indices = [Int]()
41 |
42 | for delaunay in delaunayList {
43 | let triangulation = delaunay.triangulation(shifted: points.count)
44 | indices.append(contentsOf: triangulation.indices)
45 | points.append(contentsOf: triangulation.points)
46 | }
47 |
48 | return Triangulation(points: points, indices: indices)
49 | }
50 |
51 | /// Decomposes the shape into convex polygons.
52 | ///
53 | /// Similar to `triangulate`, if `validateRule` is provided, the shape undergoes a fixing process using the poly
54 | /// bool library according to the specified fill rule. If `validateRule` is `nil`, the shape is treated as "correct"
55 | /// and decomposed directly into convex polygons.
56 | ///
57 | /// For more details on the poly bool library: [iOverlay Documentation](https://ishape-rust.github.io/iShape-js/overlay/filling_rules.html)
58 | ///
59 | /// - Parameters:
60 | /// - validateRule: An optional `FillRule` to validate and fix the shape. Defaults to `.nonZero`.
61 | /// - minArea: The minimum area to consider for a shape. Defaults to `0`.
62 | /// - Returns: An array of `ConvexPath` representing the decomposed convex polygons.
63 | func decomposeToConvexPolygons(validateRule: FillRule? = .nonZero, minArea: Int64 = 0) -> [Path] {
64 | guard let fillRule = validateRule else {
65 | if let delaunay = self.delaunay() {
66 | return delaunay.convexPolygons()
67 | } else {
68 | return []
69 | }
70 | }
71 |
72 | let shapes = self.simplify(fillRule: fillRule, minArea: minArea)
73 |
74 | if shapes.count == 1 && shapes[0].isConvexPolygon {
75 | return shapes[0]
76 | } else {
77 | var polygons = [Path]()
78 | for shape in shapes {
79 | if let delaunay = shape.delaunay() {
80 | let subPolygons = delaunay.convexPolygons()
81 | polygons.append(contentsOf: subPolygons)
82 | }
83 | }
84 |
85 | return polygons
86 | }
87 | }
88 |
89 | }
90 |
91 | public extension Shapes {
92 |
93 | func delaunay() -> [Delaunay] {
94 | var result = [Delaunay]()
95 | result.reserveCapacity(self.count)
96 | for shape in self {
97 | if let delaunay = shape.delaunay() {
98 | result.append(delaunay)
99 | }
100 | }
101 |
102 | return result
103 | }
104 | }
105 |
--------------------------------------------------------------------------------
/Sources/iTriangle/Triangulate/Triangulation.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Triangulation.swift
3 | //
4 | //
5 | // Created by Nail Sharipov on 18.12.2023.
6 | //
7 |
8 | import iFixFloat
9 |
10 | public struct Triangulation {
11 |
12 | public let points: [Point]
13 | public let indices: [Int]
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/Tests/iTriangleTests/ReadmeTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ReadmeTests.swift
3 | //
4 | //
5 | // Created by Nail Sharipov on 01.01.2024.
6 | //
7 |
8 | import XCTest
9 | import iShape
10 | import iFixFloat
11 | @testable import iTriangle
12 |
13 | final class ReadmeTests: XCTestCase {
14 |
15 | func test_00() throws {
16 | let shape = [
17 | [
18 | CGPoint(x: 0, y: 20), // 0
19 | CGPoint(x: 8, y: 10), // 1
20 | CGPoint(x: 7, y: 6), // 2
21 | CGPoint(x: 9, y: 1), // 3
22 | CGPoint(x: 13, y: -1), // 4
23 | CGPoint(x: 17, y: 1), // 5
24 | CGPoint(x: 26, y: -7), // 6
25 | CGPoint(x: 14, y: -15), // 7
26 | CGPoint(x: 0, y: -18), // 8
27 | CGPoint(x: -14, y: -15), // 9
28 | CGPoint(x: -25, y: -7), // 10
29 | CGPoint(x: -18, y: 0), // 11
30 | CGPoint(x: -16, y: -3), // 12
31 | CGPoint(x: -13, y: -4), // 13
32 | CGPoint(x: -8, y: -2), // 14
33 | CGPoint(x: -6, y: 2), // 15
34 | CGPoint(x: -7, y: 6), // 16
35 | CGPoint(x: -10, y: 8) // 17
36 | ],
37 | [
38 | CGPoint(x: 2, y: 0), // 18
39 | CGPoint(x: -2, y: -2), // 19
40 | CGPoint(x: -4, y: -5), // 20
41 | CGPoint(x: -2, y: -9), // 21
42 | CGPoint(x: 2, y: -11), // 22
43 | CGPoint(x: 5, y: -9), // 23
44 | CGPoint(x: 7, y: -5), // 24
45 | CGPoint(x: 5, y: -2) // 25
46 | ]
47 | ]
48 |
49 | let triangulation = shape.triangulate()
50 |
51 | XCTAssertTrue(!triangulation.indices.isEmpty)
52 |
53 | print(triangulation)
54 |
55 | let polygons = shape.decomposeToConvexPolygons(validateRule: .nonZero)
56 | print(polygons)
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_0.json:
--------------------------------------------------------------------------------
1 | {
2 | "points": [
3 | [
4 | -20,
5 | -20
6 | ],
7 | [
8 | -20,
9 | 20
10 | ],
11 | [
12 | 20,
13 | 20
14 | ],
15 | [
16 | 20,
17 | -20
18 | ]
19 | ],
20 | "indices": [
21 | 0,
22 | 1,
23 | 3,
24 | 1,
25 | 2,
26 | 3
27 | ],
28 | "polygons": [
29 | [
30 | [
31 | -20,
32 | -20
33 | ],
34 | [
35 | -20,
36 | 20
37 | ],
38 | [
39 | 20,
40 | 20
41 | ],
42 | [
43 | 20,
44 | -20
45 | ]
46 | ]
47 | ],
48 | "shape": [
49 | [
50 | [
51 | -20,
52 | -20
53 | ],
54 | [
55 | -20,
56 | 20
57 | ],
58 | [
59 | 20,
60 | 20
61 | ],
62 | [
63 | 20,
64 | -20
65 | ]
66 | ]
67 | ]
68 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_1.json:
--------------------------------------------------------------------------------
1 | {
2 | "shape": [
3 | [
4 | [
5 | -15,
6 | 0
7 | ],
8 | [
9 | 0,
10 | 15
11 | ],
12 | [
13 | 15,
14 | 0
15 | ],
16 | [
17 | 0,
18 | -15
19 | ]
20 | ]
21 | ],
22 | "indices": [
23 | 0,
24 | 1,
25 | 3,
26 | 3,
27 | 1,
28 | 2
29 | ],
30 | "polygons": [
31 | [
32 | [
33 | 0,
34 | 15
35 | ],
36 | [
37 | 15,
38 | 0
39 | ],
40 | [
41 | 0,
42 | -15
43 | ],
44 | [
45 | -15,
46 | 0
47 | ]
48 | ]
49 | ],
50 | "points": [
51 | [
52 | 0,
53 | 15
54 | ],
55 | [
56 | 15,
57 | 0
58 | ],
59 | [
60 | 0,
61 | -15
62 | ],
63 | [
64 | -15,
65 | 0
66 | ]
67 | ]
68 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_10.json:
--------------------------------------------------------------------------------
1 | {
2 | "shape": [
3 | [
4 | [
5 | -15,
6 | -15
7 | ],
8 | [
9 | -15,
10 | 0
11 | ],
12 | [
13 | 0,
14 | 0
15 | ],
16 | [
17 | 0,
18 | 15
19 | ],
20 | [
21 | 15,
22 | -15
23 | ]
24 | ]
25 | ],
26 | "polygons": [
27 | [
28 | [
29 | 15,
30 | -15
31 | ],
32 | [
33 | -15,
34 | -15
35 | ],
36 | [
37 | -15,
38 | 0
39 | ],
40 | [
41 | 0,
42 | 0
43 | ]
44 | ],
45 | [
46 | [
47 | 15,
48 | -15
49 | ],
50 | [
51 | 0,
52 | 0
53 | ],
54 | [
55 | 0,
56 | 15
57 | ]
58 | ]
59 | ],
60 | "indices": [
61 | 1,
62 | 2,
63 | 0,
64 | 0,
65 | 2,
66 | 4,
67 | 2,
68 | 3,
69 | 4
70 | ],
71 | "points": [
72 | [
73 | -15,
74 | -15
75 | ],
76 | [
77 | -15,
78 | 0
79 | ],
80 | [
81 | 0,
82 | 0
83 | ],
84 | [
85 | 0,
86 | 15
87 | ],
88 | [
89 | 15,
90 | -15
91 | ]
92 | ]
93 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_11.json:
--------------------------------------------------------------------------------
1 | {
2 | "indices": [
3 | 1,
4 | 2,
5 | 3,
6 | 1,
7 | 3,
8 | 0,
9 | 0,
10 | 3,
11 | 4
12 | ],
13 | "points": [
14 | [
15 | -15,
16 | -15
17 | ],
18 | [
19 | -15,
20 | 0
21 | ],
22 | [
23 | -1,
24 | 20
25 | ],
26 | [
27 | 0,
28 | 5
29 | ],
30 | [
31 | 15,
32 | -15
33 | ]
34 | ],
35 | "shape": [
36 | [
37 | [
38 | -15,
39 | -15
40 | ],
41 | [
42 | -15,
43 | 0
44 | ],
45 | [
46 | -1,
47 | 20
48 | ],
49 | [
50 | 0,
51 | 5
52 | ],
53 | [
54 | 15,
55 | -15
56 | ]
57 | ]
58 | ],
59 | "polygons": [
60 | [
61 | [
62 | -15,
63 | -15
64 | ],
65 | [
66 | -15,
67 | 0
68 | ],
69 | [
70 | -1,
71 | 20
72 | ],
73 | [
74 | 0,
75 | 5
76 | ]
77 | ],
78 | [
79 | [
80 | 15,
81 | -15
82 | ],
83 | [
84 | -15,
85 | -15
86 | ],
87 | [
88 | 0,
89 | 5
90 | ]
91 | ]
92 | ]
93 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_12.json:
--------------------------------------------------------------------------------
1 | {
2 | "indices": [
3 | 0,
4 | 1,
5 | 3,
6 | 1,
7 | 2,
8 | 3,
9 | 0,
10 | 3,
11 | 4
12 | ],
13 | "polygons": [
14 | [
15 | [
16 | 10,
17 | -20
18 | ],
19 | [
20 | -10,
21 | -20
22 | ],
23 | [
24 | -10,
25 | 0
26 | ],
27 | [
28 | 0,
29 | 0
30 | ]
31 | ],
32 | [
33 | [
34 | 0,
35 | 0
36 | ],
37 | [
38 | -10,
39 | 0
40 | ],
41 | [
42 | 10,
43 | 10
44 | ]
45 | ]
46 | ],
47 | "points": [
48 | [
49 | -10,
50 | -20
51 | ],
52 | [
53 | -10,
54 | 0
55 | ],
56 | [
57 | 10,
58 | 10
59 | ],
60 | [
61 | 0,
62 | 0
63 | ],
64 | [
65 | 10,
66 | -20
67 | ]
68 | ],
69 | "shape": [
70 | [
71 | [
72 | -10,
73 | 0
74 | ],
75 | [
76 | 10,
77 | 10
78 | ],
79 | [
80 | 0,
81 | 0
82 | ],
83 | [
84 | 10,
85 | -20
86 | ],
87 | [
88 | -10,
89 | -20
90 | ]
91 | ]
92 | ]
93 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_13.json:
--------------------------------------------------------------------------------
1 | {
2 | "indices": [
3 | 0,
4 | 1,
5 | 4,
6 | 1,
7 | 3,
8 | 4,
9 | 2,
10 | 3,
11 | 1
12 | ],
13 | "polygons": [
14 | [
15 | [
16 | 15,
17 | 15
18 | ],
19 | [
20 | 15,
21 | -15
22 | ],
23 | [
24 | -15,
25 | -15
26 | ],
27 | [
28 | -10,
29 | 0
30 | ]
31 | ],
32 | [
33 | [
34 | -10,
35 | 0
36 | ],
37 | [
38 | -15,
39 | 15
40 | ],
41 | [
42 | 15,
43 | 15
44 | ]
45 | ]
46 | ],
47 | "shape": [
48 | [
49 | [
50 | -15,
51 | -15
52 | ],
53 | [
54 | -10,
55 | 0
56 | ],
57 | [
58 | -15,
59 | 15
60 | ],
61 | [
62 | 15,
63 | 15
64 | ],
65 | [
66 | 15,
67 | -15
68 | ]
69 | ]
70 | ],
71 | "points": [
72 | [
73 | -15,
74 | -15
75 | ],
76 | [
77 | -10,
78 | 0
79 | ],
80 | [
81 | -15,
82 | 15
83 | ],
84 | [
85 | 15,
86 | 15
87 | ],
88 | [
89 | 15,
90 | -15
91 | ]
92 | ]
93 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_14.json:
--------------------------------------------------------------------------------
1 | {
2 | "indices": [
3 | 0,
4 | 1,
5 | 4,
6 | 3,
7 | 4,
8 | 2,
9 | 4,
10 | 1,
11 | 2
12 | ],
13 | "polygons": [
14 | [
15 | [
16 | 15,
17 | -15
18 | ],
19 | [
20 | -15,
21 | -5
22 | ],
23 | [
24 | -20,
25 | 15
26 | ],
27 | [
28 | 15,
29 | 15
30 | ]
31 | ],
32 | [
33 | [
34 | 15,
35 | -15
36 | ],
37 | [
38 | -15,
39 | -15
40 | ],
41 | [
42 | -15,
43 | -5
44 | ]
45 | ]
46 | ],
47 | "shape": [
48 | [
49 | [
50 | -15,
51 | -15
52 | ],
53 | [
54 | -15,
55 | -5
56 | ],
57 | [
58 | -20,
59 | 15
60 | ],
61 | [
62 | 15,
63 | 15
64 | ],
65 | [
66 | 15,
67 | -15
68 | ]
69 | ]
70 | ],
71 | "points": [
72 | [
73 | 15,
74 | 15
75 | ],
76 | [
77 | 15,
78 | -15
79 | ],
80 | [
81 | -15,
82 | -15
83 | ],
84 | [
85 | -15,
86 | -5
87 | ],
88 | [
89 | -20,
90 | 15
91 | ]
92 | ]
93 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_15.json:
--------------------------------------------------------------------------------
1 | {
2 | "shape": [
3 | [
4 | [
5 | -15,
6 | 0
7 | ],
8 | [
9 | -5,
10 | 10
11 | ],
12 | [
13 | -10,
14 | 15
15 | ],
16 | [
17 | 5,
18 | 20
19 | ],
20 | [
21 | 15,
22 | 0
23 | ],
24 | [
25 | 5,
26 | -20
27 | ],
28 | [
29 | -10,
30 | -15
31 | ],
32 | [
33 | -5,
34 | -10
35 | ]
36 | ]
37 | ],
38 | "indices": [
39 | 0,
40 | 1,
41 | 7,
42 | 6,
43 | 7,
44 | 5,
45 | 7,
46 | 1,
47 | 4,
48 | 2,
49 | 3,
50 | 1,
51 | 1,
52 | 3,
53 | 4,
54 | 7,
55 | 4,
56 | 5
57 | ],
58 | "points": [
59 | [
60 | -5,
61 | 10
62 | ],
63 | [
64 | -10,
65 | 15
66 | ],
67 | [
68 | 5,
69 | 20
70 | ],
71 | [
72 | 15,
73 | 0
74 | ],
75 | [
76 | 5,
77 | -20
78 | ],
79 | [
80 | -10,
81 | -15
82 | ],
83 | [
84 | -5,
85 | -10
86 | ],
87 | [
88 | -15,
89 | 0
90 | ]
91 | ],
92 | "polygons": [
93 | [
94 | [
95 | 5,
96 | 20
97 | ],
98 | [
99 | 15,
100 | 0
101 | ],
102 | [
103 | 5,
104 | -20
105 | ],
106 | [
107 | -5,
108 | -10
109 | ],
110 | [
111 | -15,
112 | 0
113 | ],
114 | [
115 | -5,
116 | 10
117 | ]
118 | ],
119 | [
120 | [
121 | 5,
122 | -20
123 | ],
124 | [
125 | -10,
126 | -15
127 | ],
128 | [
129 | -5,
130 | -10
131 | ]
132 | ],
133 | [
134 | [
135 | -5,
136 | 10
137 | ],
138 | [
139 | -10,
140 | 15
141 | ],
142 | [
143 | 5,
144 | 20
145 | ]
146 | ]
147 | ]
148 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_16.json:
--------------------------------------------------------------------------------
1 | {
2 | "indices": [
3 | 1,
4 | 2,
5 | 0,
6 | 0,
7 | 2,
8 | 7,
9 | 2,
10 | 3,
11 | 4,
12 | 2,
13 | 4,
14 | 7,
15 | 4,
16 | 5,
17 | 7,
18 | 6,
19 | 7,
20 | 5
21 | ],
22 | "polygons": [
23 | [
24 | [
25 | 5,
26 | 20
27 | ],
28 | [
29 | 15,
30 | 0
31 | ],
32 | [
33 | 5,
34 | -20
35 | ],
36 | [
37 | -5,
38 | -10
39 | ],
40 | [
41 | -15,
42 | 0
43 | ],
44 | [
45 | -15,
46 | 10
47 | ],
48 | [
49 | -10,
50 | 15
51 | ]
52 | ],
53 | [
54 | [
55 | 5,
56 | -20
57 | ],
58 | [
59 | -10,
60 | -15
61 | ],
62 | [
63 | -5,
64 | -10
65 | ]
66 | ]
67 | ],
68 | "shape": [
69 | [
70 | [
71 | -15,
72 | 0
73 | ],
74 | [
75 | -15,
76 | 10
77 | ],
78 | [
79 | -10,
80 | 15
81 | ],
82 | [
83 | 5,
84 | 20
85 | ],
86 | [
87 | 15,
88 | 0
89 | ],
90 | [
91 | 5,
92 | -20
93 | ],
94 | [
95 | -10,
96 | -15
97 | ],
98 | [
99 | -5,
100 | -10
101 | ]
102 | ]
103 | ],
104 | "points": [
105 | [
106 | -15,
107 | 0
108 | ],
109 | [
110 | -15,
111 | 10
112 | ],
113 | [
114 | -10,
115 | 15
116 | ],
117 | [
118 | 5,
119 | 20
120 | ],
121 | [
122 | 15,
123 | 0
124 | ],
125 | [
126 | 5,
127 | -20
128 | ],
129 | [
130 | -10,
131 | -15
132 | ],
133 | [
134 | -5,
135 | -10
136 | ]
137 | ]
138 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_17.json:
--------------------------------------------------------------------------------
1 | {
2 | "indices": [
3 | 0,
4 | 1,
5 | 7,
6 | 1,
7 | 2,
8 | 7,
9 | 2,
10 | 5,
11 | 6,
12 | 2,
13 | 6,
14 | 7,
15 | 3,
16 | 4,
17 | 2,
18 | 4,
19 | 5,
20 | 2
21 | ],
22 | "shape": [
23 | [
24 | [
25 | 5,
26 | 0
27 | ],
28 | [
29 | -10,
30 | 5
31 | ],
32 | [
33 | -10,
34 | 15
35 | ],
36 | [
37 | 5,
38 | 20
39 | ],
40 | [
41 | 15,
42 | 0
43 | ],
44 | [
45 | 5,
46 | -20
47 | ],
48 | [
49 | -10,
50 | -15
51 | ],
52 | [
53 | -10,
54 | -5
55 | ]
56 | ]
57 | ],
58 | "points": [
59 | [
60 | -10,
61 | -15
62 | ],
63 | [
64 | -10,
65 | -5
66 | ],
67 | [
68 | 5,
69 | 0
70 | ],
71 | [
72 | -10,
73 | 5
74 | ],
75 | [
76 | -10,
77 | 15
78 | ],
79 | [
80 | 5,
81 | 20
82 | ],
83 | [
84 | 15,
85 | 0
86 | ],
87 | [
88 | 5,
89 | -20
90 | ]
91 | ],
92 | "polygons": [
93 | [
94 | [
95 | 15,
96 | 0
97 | ],
98 | [
99 | 5,
100 | -20
101 | ],
102 | [
103 | -10,
104 | -15
105 | ],
106 | [
107 | -10,
108 | -5
109 | ],
110 | [
111 | 5,
112 | 0
113 | ]
114 | ],
115 | [
116 | [
117 | -10,
118 | 5
119 | ],
120 | [
121 | -10,
122 | 15
123 | ],
124 | [
125 | 5,
126 | 20
127 | ],
128 | [
129 | 15,
130 | 0
131 | ],
132 | [
133 | 5,
134 | 0
135 | ]
136 | ]
137 | ]
138 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_18.json:
--------------------------------------------------------------------------------
1 | {
2 | "shape": [
3 | [
4 | [
5 | 0,
6 | 0
7 | ],
8 | [
9 | -10,
10 | 5
11 | ],
12 | [
13 | -10,
14 | 15
15 | ],
16 | [
17 | 10,
18 | 15
19 | ],
20 | [
21 | 5,
22 | 10
23 | ],
24 | [
25 | 10,
26 | -15
27 | ],
28 | [
29 | -10,
30 | -15
31 | ],
32 | [
33 | -10,
34 | -5
35 | ]
36 | ]
37 | ],
38 | "indices": [
39 | 1,
40 | 2,
41 | 0,
42 | 0,
43 | 2,
44 | 7,
45 | 2,
46 | 6,
47 | 7,
48 | 3,
49 | 4,
50 | 6,
51 | 3,
52 | 6,
53 | 2,
54 | 4,
55 | 5,
56 | 6
57 | ],
58 | "points": [
59 | [
60 | -10,
61 | -15
62 | ],
63 | [
64 | -10,
65 | -5
66 | ],
67 | [
68 | 0,
69 | 0
70 | ],
71 | [
72 | -10,
73 | 5
74 | ],
75 | [
76 | -10,
77 | 15
78 | ],
79 | [
80 | 10,
81 | 15
82 | ],
83 | [
84 | 5,
85 | 10
86 | ],
87 | [
88 | 10,
89 | -15
90 | ]
91 | ],
92 | "polygons": [
93 | [
94 | [
95 | 10,
96 | -15
97 | ],
98 | [
99 | -10,
100 | -15
101 | ],
102 | [
103 | -10,
104 | -5
105 | ],
106 | [
107 | 0,
108 | 0
109 | ]
110 | ],
111 | [
112 | [
113 | 10,
114 | -15
115 | ],
116 | [
117 | 0,
118 | 0
119 | ],
120 | [
121 | 5,
122 | 10
123 | ]
124 | ],
125 | [
126 | [
127 | 0,
128 | 0
129 | ],
130 | [
131 | -10,
132 | 5
133 | ],
134 | [
135 | -10,
136 | 15
137 | ],
138 | [
139 | 5,
140 | 10
141 | ]
142 | ],
143 | [
144 | [
145 | 5,
146 | 10
147 | ],
148 | [
149 | -10,
150 | 15
151 | ],
152 | [
153 | 10,
154 | 15
155 | ]
156 | ]
157 | ]
158 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_19.json:
--------------------------------------------------------------------------------
1 | {
2 | "shape": [
3 | [
4 | [
5 | -15,
6 | 0
7 | ],
8 | [
9 | -5,
10 | 10
11 | ],
12 | [
13 | -10,
14 | 15
15 | ],
16 | [
17 | 5,
18 | 20
19 | ],
20 | [
21 | 0,
22 | 0
23 | ],
24 | [
25 | 5,
26 | -20
27 | ],
28 | [
29 | -10,
30 | -15
31 | ],
32 | [
33 | -5,
34 | -10
35 | ]
36 | ]
37 | ],
38 | "points": [
39 | [
40 | -5,
41 | 10
42 | ],
43 | [
44 | -10,
45 | 15
46 | ],
47 | [
48 | 5,
49 | 20
50 | ],
51 | [
52 | 0,
53 | 0
54 | ],
55 | [
56 | 5,
57 | -20
58 | ],
59 | [
60 | -10,
61 | -15
62 | ],
63 | [
64 | -5,
65 | -10
66 | ],
67 | [
68 | -15,
69 | 0
70 | ]
71 | ],
72 | "polygons": [
73 | [
74 | [
75 | 5,
76 | -20
77 | ],
78 | [
79 | -5,
80 | -10
81 | ],
82 | [
83 | -15,
84 | 0
85 | ],
86 | [
87 | -5,
88 | 10
89 | ],
90 | [
91 | 0,
92 | 0
93 | ]
94 | ],
95 | [
96 | [
97 | 5,
98 | -20
99 | ],
100 | [
101 | -10,
102 | -15
103 | ],
104 | [
105 | -5,
106 | -10
107 | ]
108 | ],
109 | [
110 | [
111 | -5,
112 | 10
113 | ],
114 | [
115 | -10,
116 | 15
117 | ],
118 | [
119 | 5,
120 | 20
121 | ]
122 | ],
123 | [
124 | [
125 | 0,
126 | 0
127 | ],
128 | [
129 | -5,
130 | 10
131 | ],
132 | [
133 | 5,
134 | 20
135 | ]
136 | ]
137 | ],
138 | "indices": [
139 | 0,
140 | 1,
141 | 4,
142 | 0,
143 | 4,
144 | 7,
145 | 6,
146 | 7,
147 | 5,
148 | 7,
149 | 4,
150 | 5,
151 | 2,
152 | 3,
153 | 1,
154 | 1,
155 | 3,
156 | 4
157 | ]
158 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_2.json:
--------------------------------------------------------------------------------
1 | {
2 | "indices": [
3 | 0,
4 | 1,
5 | 5,
6 | 5,
7 | 1,
8 | 4,
9 | 1,
10 | 2,
11 | 4,
12 | 4,
13 | 2,
14 | 3
15 | ],
16 | "points": [
17 | [
18 | -15,
19 | 15
20 | ],
21 | [
22 | 15,
23 | 15
24 | ],
25 | [
26 | 25,
27 | 0
28 | ],
29 | [
30 | 15,
31 | -15
32 | ],
33 | [
34 | -15,
35 | -15
36 | ],
37 | [
38 | -25,
39 | 0
40 | ]
41 | ],
42 | "polygons": [
43 | [
44 | [
45 | -15,
46 | 15
47 | ],
48 | [
49 | 15,
50 | 15
51 | ],
52 | [
53 | 25,
54 | 0
55 | ],
56 | [
57 | 15,
58 | -15
59 | ],
60 | [
61 | -15,
62 | -15
63 | ],
64 | [
65 | -25,
66 | 0
67 | ]
68 | ]
69 | ],
70 | "shape": [
71 | [
72 | [
73 | -15,
74 | -15
75 | ],
76 | [
77 | -25,
78 | 0
79 | ],
80 | [
81 | -15,
82 | 15
83 | ],
84 | [
85 | 15,
86 | 15
87 | ],
88 | [
89 | 25,
90 | 0
91 | ],
92 | [
93 | 15,
94 | -15
95 | ]
96 | ]
97 | ]
98 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_20.json:
--------------------------------------------------------------------------------
1 | {
2 | "indices": [
3 | 5,
4 | 0,
5 | 1,
6 | 8,
7 | 9,
8 | 7,
9 | 5,
10 | 9,
11 | 0,
12 | 4,
13 | 1,
14 | 3,
15 | 9,
16 | 5,
17 | 6,
18 | 4,
19 | 5,
20 | 1,
21 | 2,
22 | 3,
23 | 1,
24 | 9,
25 | 6,
26 | 7
27 | ],
28 | "points": [
29 | [
30 | -5120,
31 | 10240
32 | ],
33 | [
34 | -10240,
35 | 15360
36 | ],
37 | [
38 | -2560,
39 | 20480
40 | ],
41 | [
42 | 5120,
43 | 20480
44 | ],
45 | [
46 | 0,
47 | 0
48 | ],
49 | [
50 | 5120,
51 | -20480
52 | ],
53 | [
54 | -2560,
55 | -20480
56 | ],
57 | [
58 | -10240,
59 | -15360
60 | ],
61 | [
62 | -5120,
63 | -10240
64 | ],
65 | [
66 | -15360,
67 | 0
68 | ]
69 | ],
70 | "shape": [
71 | [
72 | [
73 | -15360,
74 | 0
75 | ],
76 | [
77 | -5120,
78 | 10240
79 | ],
80 | [
81 | -10240,
82 | 15360
83 | ],
84 | [
85 | -2560,
86 | 20480
87 | ],
88 | [
89 | 5120,
90 | 20480
91 | ],
92 | [
93 | 2560,
94 | 10240
95 | ],
96 | [
97 | 0,
98 | 0
99 | ],
100 | [
101 | 2560,
102 | -10240
103 | ],
104 | [
105 | 5120,
106 | -20480
107 | ],
108 | [
109 | -2560,
110 | -20480
111 | ],
112 | [
113 | -10240,
114 | -15360
115 | ],
116 | [
117 | -5120,
118 | -10240
119 | ]
120 | ]
121 | ],
122 | "polygons": [
123 | [
124 | [
125 | -5120,
126 | -10240
127 | ],
128 | [
129 | -15360,
130 | 0
131 | ],
132 | [
133 | -5120,
134 | 10240
135 | ],
136 | [
137 | 5120,
138 | 20480
139 | ],
140 | [
141 | 0,
142 | 0
143 | ]
144 | ],
145 | [
146 | [
147 | 5120,
148 | -20480
149 | ],
150 | [
151 | -2560,
152 | -20480
153 | ],
154 | [
155 | -10240,
156 | -15360
157 | ],
158 | [
159 | -5120,
160 | -10240
161 | ]
162 | ],
163 | [
164 | [
165 | -10240,
166 | 15360
167 | ],
168 | [
169 | -2560,
170 | 20480
171 | ],
172 | [
173 | 5120,
174 | 20480
175 | ],
176 | [
177 | -5120,
178 | 10240
179 | ]
180 | ],
181 | [
182 | [
183 | 5120,
184 | -20480
185 | ],
186 | [
187 | -5120,
188 | -10240
189 | ],
190 | [
191 | 0,
192 | 0
193 | ]
194 | ]
195 | ]
196 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_21.json:
--------------------------------------------------------------------------------
1 | {
2 | "points": [
3 | [
4 | -5120,
5 | 10240
6 | ],
7 | [
8 | -10240,
9 | 15360
10 | ],
11 | [
12 | -2560,
13 | 20480
14 | ],
15 | [
16 | 5120,
17 | 20480
18 | ],
19 | [
20 | -2560,
21 | -15360
22 | ],
23 | [
24 | 5120,
25 | -20480
26 | ],
27 | [
28 | -2560,
29 | -20480
30 | ],
31 | [
32 | -10240,
33 | -15360
34 | ],
35 | [
36 | -5120,
37 | -10240
38 | ],
39 | [
40 | -15360,
41 | 0
42 | ]
43 | ],
44 | "shape": [
45 | [
46 | [
47 | -15360,
48 | 0
49 | ],
50 | [
51 | -5120,
52 | 10240
53 | ],
54 | [
55 | -10240,
56 | 15360
57 | ],
58 | [
59 | -2560,
60 | 20480
61 | ],
62 | [
63 | 5120,
64 | 20480
65 | ],
66 | [
67 | -2560,
68 | -15360
69 | ],
70 | [
71 | 5120,
72 | -20480
73 | ],
74 | [
75 | -2560,
76 | -20480
77 | ],
78 | [
79 | -10240,
80 | -15360
81 | ],
82 | [
83 | -5120,
84 | -10240
85 | ]
86 | ]
87 | ],
88 | "indices": [
89 | 0,
90 | 1,
91 | 9,
92 | 8,
93 | 9,
94 | 5,
95 | 9,
96 | 1,
97 | 4,
98 | 8,
99 | 5,
100 | 7,
101 | 7,
102 | 5,
103 | 6,
104 | 2,
105 | 3,
106 | 1,
107 | 1,
108 | 3,
109 | 4,
110 | 9,
111 | 4,
112 | 5
113 | ],
114 | "polygons": [
115 | [
116 | [
117 | 5120,
118 | 20480
119 | ],
120 | [
121 | -5120,
122 | -10240
123 | ],
124 | [
125 | -15360,
126 | 0
127 | ],
128 | [
129 | -5120,
130 | 10240
131 | ]
132 | ],
133 | [
134 | [
135 | -2560,
136 | -20480
137 | ],
138 | [
139 | -10240,
140 | -15360
141 | ],
142 | [
143 | -5120,
144 | -10240
145 | ],
146 | [
147 | -2560,
148 | -15360
149 | ]
150 | ],
151 | [
152 | [
153 | 5120,
154 | -20480
155 | ],
156 | [
157 | -2560,
158 | -20480
159 | ],
160 | [
161 | -2560,
162 | -15360
163 | ]
164 | ],
165 | [
166 | [
167 | 5120,
168 | 20480
169 | ],
170 | [
171 | -5120,
172 | 10240
173 | ],
174 | [
175 | -10240,
176 | 15360
177 | ],
178 | [
179 | -2560,
180 | 20480
181 | ]
182 | ],
183 | [
184 | [
185 | -2560,
186 | -15360
187 | ],
188 | [
189 | -5120,
190 | -10240
191 | ],
192 | [
193 | 5120,
194 | 20480
195 | ]
196 | ]
197 | ]
198 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_22.json:
--------------------------------------------------------------------------------
1 | {
2 | "shape": [
3 | [
4 | [
5 | -10,
6 | 10
7 | ],
8 | [
9 | -5,
10 | 5
11 | ],
12 | [
13 | 10,
14 | 20
15 | ],
16 | [
17 | 20,
18 | 20
19 | ],
20 | [
21 | 25,
22 | 20
23 | ],
24 | [
25 | 25,
26 | -5
27 | ],
28 | [
29 | 10,
30 | -5
31 | ],
32 | [
33 | 10,
34 | -10
35 | ],
36 | [
37 | -10,
38 | -10
39 | ]
40 | ]
41 | ],
42 | "points": [
43 | [
44 | -10,
45 | -10
46 | ],
47 | [
48 | -10,
49 | 10
50 | ],
51 | [
52 | -5,
53 | 5
54 | ],
55 | [
56 | 10,
57 | 20
58 | ],
59 | [
60 | 25,
61 | 20
62 | ],
63 | [
64 | 25,
65 | -5
66 | ],
67 | [
68 | 10,
69 | -5
70 | ],
71 | [
72 | 10,
73 | -10
74 | ]
75 | ],
76 | "polygons": [
77 | [
78 | [
79 | -10,
80 | -10
81 | ],
82 | [
83 | -10,
84 | 10
85 | ],
86 | [
87 | -5,
88 | 5
89 | ]
90 | ],
91 | [
92 | [
93 | 10,
94 | 20
95 | ],
96 | [
97 | 10,
98 | -5
99 | ],
100 | [
101 | 10,
102 | -10
103 | ],
104 | [
105 | -10,
106 | -10
107 | ],
108 | [
109 | -5,
110 | 5
111 | ]
112 | ],
113 | [
114 | [
115 | 25,
116 | 20
117 | ],
118 | [
119 | 25,
120 | -5
121 | ],
122 | [
123 | 10,
124 | -5
125 | ],
126 | [
127 | 10,
128 | 20
129 | ]
130 | ]
131 | ],
132 | "indices": [
133 | 1,
134 | 2,
135 | 0,
136 | 0,
137 | 2,
138 | 6,
139 | 0,
140 | 6,
141 | 7,
142 | 2,
143 | 3,
144 | 6,
145 | 6,
146 | 3,
147 | 5,
148 | 3,
149 | 4,
150 | 5
151 | ]
152 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_23.json:
--------------------------------------------------------------------------------
1 | {
2 | "shape": [
3 | [
4 | [
5 | -10,
6 | 10
7 | ],
8 | [
9 | -5,
10 | 15
11 | ],
12 | [
13 | 10,
14 | 20
15 | ],
16 | [
17 | 20,
18 | 20
19 | ],
20 | [
21 | 25,
22 | 20
23 | ],
24 | [
25 | 25,
26 | -5
27 | ],
28 | [
29 | 10,
30 | -5
31 | ],
32 | [
33 | 10,
34 | -10
35 | ],
36 | [
37 | -10,
38 | -10
39 | ]
40 | ]
41 | ],
42 | "points": [
43 | [
44 | -10,
45 | -10
46 | ],
47 | [
48 | -10,
49 | 10
50 | ],
51 | [
52 | -5,
53 | 15
54 | ],
55 | [
56 | 10,
57 | 20
58 | ],
59 | [
60 | 25,
61 | 20
62 | ],
63 | [
64 | 25,
65 | -5
66 | ],
67 | [
68 | 10,
69 | -5
70 | ],
71 | [
72 | 10,
73 | -10
74 | ]
75 | ],
76 | "polygons": [
77 | [
78 | [
79 | 25,
80 | 20
81 | ],
82 | [
83 | 25,
84 | -5
85 | ],
86 | [
87 | 10,
88 | -5
89 | ],
90 | [
91 | -10,
92 | 10
93 | ],
94 | [
95 | -5,
96 | 15
97 | ],
98 | [
99 | 10,
100 | 20
101 | ]
102 | ],
103 | [
104 | [
105 | 10,
106 | -10
107 | ],
108 | [
109 | -10,
110 | -10
111 | ],
112 | [
113 | -10,
114 | 10
115 | ],
116 | [
117 | 10,
118 | -5
119 | ]
120 | ]
121 | ],
122 | "indices": [
123 | 6,
124 | 1,
125 | 2,
126 | 0,
127 | 1,
128 | 6,
129 | 0,
130 | 6,
131 | 7,
132 | 2,
133 | 3,
134 | 6,
135 | 6,
136 | 3,
137 | 5,
138 | 3,
139 | 4,
140 | 5
141 | ]
142 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_24.json:
--------------------------------------------------------------------------------
1 | {
2 | "shape": [
3 | [
4 | [
5 | -10,
6 | 10
7 | ],
8 | [
9 | -5,
10 | 5
11 | ],
12 | [
13 | 10,
14 | 20
15 | ],
16 | [
17 | 15,
18 | 10
19 | ],
20 | [
21 | 25,
22 | 20
23 | ],
24 | [
25 | 25,
26 | 0
27 | ],
28 | [
29 | 10,
30 | 0
31 | ],
32 | [
33 | 10,
34 | -10
35 | ],
36 | [
37 | -10,
38 | -10
39 | ]
40 | ]
41 | ],
42 | "indices": [
43 | 1,
44 | 2,
45 | 0,
46 | 0,
47 | 2,
48 | 8,
49 | 8,
50 | 2,
51 | 7,
52 | 2,
53 | 3,
54 | 4,
55 | 2,
56 | 4,
57 | 7,
58 | 7,
59 | 4,
60 | 6,
61 | 4,
62 | 5,
63 | 6
64 | ],
65 | "points": [
66 | [
67 | -10,
68 | -10
69 | ],
70 | [
71 | -10,
72 | 10
73 | ],
74 | [
75 | -5,
76 | 5
77 | ],
78 | [
79 | 10,
80 | 20
81 | ],
82 | [
83 | 15,
84 | 10
85 | ],
86 | [
87 | 25,
88 | 20
89 | ],
90 | [
91 | 25,
92 | 0
93 | ],
94 | [
95 | 10,
96 | 0
97 | ],
98 | [
99 | 10,
100 | -10
101 | ]
102 | ],
103 | "polygons": [
104 | [
105 | [
106 | 10,
107 | -10
108 | ],
109 | [
110 | -10,
111 | -10
112 | ],
113 | [
114 | -10,
115 | 10
116 | ],
117 | [
118 | -5,
119 | 5
120 | ]
121 | ],
122 | [
123 | [
124 | 10,
125 | 0
126 | ],
127 | [
128 | 10,
129 | -10
130 | ],
131 | [
132 | -5,
133 | 5
134 | ]
135 | ],
136 | [
137 | [
138 | 10,
139 | 0
140 | ],
141 | [
142 | -5,
143 | 5
144 | ],
145 | [
146 | 10,
147 | 20
148 | ],
149 | [
150 | 15,
151 | 10
152 | ]
153 | ],
154 | [
155 | [
156 | 25,
157 | 20
158 | ],
159 | [
160 | 25,
161 | 0
162 | ],
163 | [
164 | 10,
165 | 0
166 | ],
167 | [
168 | 15,
169 | 10
170 | ]
171 | ]
172 | ]
173 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_25.json:
--------------------------------------------------------------------------------
1 | {
2 | "shape": [
3 | [
4 | [
5 | -10,
6 | 10
7 | ],
8 | [
9 | -5,
10 | -5
11 | ],
12 | [
13 | 10,
14 | 20
15 | ],
16 | [
17 | 15,
18 | 10
19 | ],
20 | [
21 | 25,
22 | 20
23 | ],
24 | [
25 | 25,
26 | 0
27 | ],
28 | [
29 | 10,
30 | 0
31 | ],
32 | [
33 | 10,
34 | -10
35 | ],
36 | [
37 | -10,
38 | -10
39 | ]
40 | ]
41 | ],
42 | "indices": [
43 | 1,
44 | 2,
45 | 0,
46 | 0,
47 | 2,
48 | 8,
49 | 8,
50 | 2,
51 | 7,
52 | 2,
53 | 3,
54 | 7,
55 | 3,
56 | 4,
57 | 7,
58 | 7,
59 | 4,
60 | 6,
61 | 4,
62 | 5,
63 | 6
64 | ],
65 | "points": [
66 | [
67 | -10,
68 | -10
69 | ],
70 | [
71 | -10,
72 | 10
73 | ],
74 | [
75 | -5,
76 | -5
77 | ],
78 | [
79 | 10,
80 | 20
81 | ],
82 | [
83 | 15,
84 | 10
85 | ],
86 | [
87 | 25,
88 | 20
89 | ],
90 | [
91 | 25,
92 | 0
93 | ],
94 | [
95 | 10,
96 | 0
97 | ],
98 | [
99 | 10,
100 | -10
101 | ]
102 | ],
103 | "polygons": [
104 | [
105 | [
106 | -10,
107 | -10
108 | ],
109 | [
110 | -10,
111 | 10
112 | ],
113 | [
114 | -5,
115 | -5
116 | ]
117 | ],
118 | [
119 | [
120 | 10,
121 | 0
122 | ],
123 | [
124 | 10,
125 | -10
126 | ],
127 | [
128 | -10,
129 | -10
130 | ],
131 | [
132 | -5,
133 | -5
134 | ]
135 | ],
136 | [
137 | [
138 | 15,
139 | 10
140 | ],
141 | [
142 | 10,
143 | 0
144 | ],
145 | [
146 | -5,
147 | -5
148 | ],
149 | [
150 | 10,
151 | 20
152 | ]
153 | ],
154 | [
155 | [
156 | 25,
157 | 20
158 | ],
159 | [
160 | 25,
161 | 0
162 | ],
163 | [
164 | 10,
165 | 0
166 | ],
167 | [
168 | 15,
169 | 10
170 | ]
171 | ]
172 | ]
173 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_26.json:
--------------------------------------------------------------------------------
1 | {
2 | "shape": [
3 | [
4 | [
5 | -10,
6 | 10
7 | ],
8 | [
9 | 10,
10 | 10
11 | ],
12 | [
13 | 10,
14 | 20
15 | ],
16 | [
17 | 15,
18 | 10
19 | ],
20 | [
21 | 25,
22 | 20
23 | ],
24 | [
25 | 25,
26 | 0
27 | ],
28 | [
29 | 10,
30 | 0
31 | ],
32 | [
33 | 10,
34 | -10
35 | ],
36 | [
37 | -10,
38 | -10
39 | ]
40 | ]
41 | ],
42 | "points": [
43 | [
44 | -10,
45 | -10
46 | ],
47 | [
48 | -10,
49 | 10
50 | ],
51 | [
52 | 10,
53 | 10
54 | ],
55 | [
56 | 10,
57 | 20
58 | ],
59 | [
60 | 15,
61 | 10
62 | ],
63 | [
64 | 25,
65 | 20
66 | ],
67 | [
68 | 25,
69 | 0
70 | ],
71 | [
72 | 10,
73 | 0
74 | ],
75 | [
76 | 10,
77 | -10
78 | ]
79 | ],
80 | "indices": [
81 | 0,
82 | 1,
83 | 7,
84 | 0,
85 | 7,
86 | 8,
87 | 1,
88 | 2,
89 | 7,
90 | 2,
91 | 3,
92 | 4,
93 | 2,
94 | 4,
95 | 7,
96 | 7,
97 | 4,
98 | 6,
99 | 4,
100 | 5,
101 | 6
102 | ],
103 | "polygons": [
104 | [
105 | [
106 | 10,
107 | 10
108 | ],
109 | [
110 | 10,
111 | 0
112 | ],
113 | [
114 | 10,
115 | -10
116 | ],
117 | [
118 | -10,
119 | -10
120 | ],
121 | [
122 | -10,
123 | 10
124 | ]
125 | ],
126 | [
127 | [
128 | 10,
129 | 0
130 | ],
131 | [
132 | 10,
133 | 10
134 | ],
135 | [
136 | 10,
137 | 20
138 | ],
139 | [
140 | 15,
141 | 10
142 | ]
143 | ],
144 | [
145 | [
146 | 25,
147 | 20
148 | ],
149 | [
150 | 25,
151 | 0
152 | ],
153 | [
154 | 10,
155 | 0
156 | ],
157 | [
158 | 15,
159 | 10
160 | ]
161 | ]
162 | ]
163 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_29.json:
--------------------------------------------------------------------------------
1 | {
2 | "indices": [
3 | 0,
4 | 1,
5 | 3,
6 | 1,
7 | 2,
8 | 3
9 | ],
10 | "shape": [
11 | [
12 | [
13 | -10240,
14 | -10240
15 | ],
16 | [
17 | -10240,
18 | -5120
19 | ],
20 | [
21 | -10240,
22 | 0
23 | ],
24 | [
25 | -10240,
26 | 5120
27 | ],
28 | [
29 | -10240,
30 | 10240
31 | ],
32 | [
33 | 10240,
34 | 10240
35 | ],
36 | [
37 | 10240,
38 | 5120
39 | ],
40 | [
41 | 10240,
42 | 0
43 | ],
44 | [
45 | 10240,
46 | -5120
47 | ],
48 | [
49 | 10240,
50 | -10240
51 | ]
52 | ]
53 | ],
54 | "polygons": [
55 | [
56 | [
57 | -10240,
58 | -10240
59 | ],
60 | [
61 | -10240,
62 | 10240
63 | ],
64 | [
65 | 10240,
66 | 10240
67 | ],
68 | [
69 | 10240,
70 | -10240
71 | ]
72 | ]
73 | ],
74 | "points": [
75 | [
76 | -10240,
77 | -10240
78 | ],
79 | [
80 | -10240,
81 | 10240
82 | ],
83 | [
84 | 10240,
85 | 10240
86 | ],
87 | [
88 | 10240,
89 | -10240
90 | ]
91 | ]
92 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_3.json:
--------------------------------------------------------------------------------
1 | {
2 | "polygons": [
3 | [
4 | [
5 | 0,
6 | 15
7 | ],
8 | [
9 | 10,
10 | 5
11 | ],
12 | [
13 | 5,
14 | -10
15 | ],
16 | [
17 | -5,
18 | -15
19 | ],
20 | [
21 | -10,
22 | 0
23 | ]
24 | ]
25 | ],
26 | "indices": [
27 | 2,
28 | 0,
29 | 1,
30 | 0,
31 | 3,
32 | 4,
33 | 2,
34 | 3,
35 | 0
36 | ],
37 | "points": [
38 | [
39 | 0,
40 | 15
41 | ],
42 | [
43 | 10,
44 | 5
45 | ],
46 | [
47 | 5,
48 | -10
49 | ],
50 | [
51 | -5,
52 | -15
53 | ],
54 | [
55 | -10,
56 | 0
57 | ]
58 | ],
59 | "shape": [
60 | [
61 | [
62 | -5,
63 | -15
64 | ],
65 | [
66 | -10,
67 | 0
68 | ],
69 | [
70 | 0,
71 | 15
72 | ],
73 | [
74 | 10,
75 | 5
76 | ],
77 | [
78 | 5,
79 | -10
80 | ]
81 | ]
82 | ]
83 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_31.json:
--------------------------------------------------------------------------------
1 | {
2 | "indices": [
3 | 12,
4 | 0,
5 | 1,
6 | 12,
7 | 1,
8 | 11,
9 | 1,
10 | 2,
11 | 4,
12 | 5,
13 | 11,
14 | 1,
15 | 4,
16 | 2,
17 | 3,
18 | 5,
19 | 1,
20 | 4,
21 | 5,
22 | 10,
23 | 11,
24 | 10,
25 | 5,
26 | 8,
27 | 10,
28 | 8,
29 | 9,
30 | 5,
31 | 6,
32 | 7,
33 | 5,
34 | 7,
35 | 8
36 | ],
37 | "shape": [
38 | [
39 | [
40 | -20,
41 | 5
42 | ],
43 | [
44 | -10,
45 | 10
46 | ],
47 | [
48 | -5,
49 | 20
50 | ],
51 | [
52 | 0,
53 | 25
54 | ],
55 | [
56 | 5,
57 | 15
58 | ],
59 | [
60 | 10,
61 | 0
62 | ],
63 | [
64 | 15,
65 | 5
66 | ],
67 | [
68 | 20,
69 | -5
70 | ],
71 | [
72 | 15,
73 | -15
74 | ],
75 | [
76 | 5,
77 | -25
78 | ],
79 | [
80 | 0,
81 | -15
82 | ],
83 | [
84 | -10,
85 | -10
86 | ],
87 | [
88 | -15,
89 | -5
90 | ]
91 | ]
92 | ],
93 | "points": [
94 | [
95 | -10,
96 | 10
97 | ],
98 | [
99 | -5,
100 | 20
101 | ],
102 | [
103 | 0,
104 | 25
105 | ],
106 | [
107 | 5,
108 | 15
109 | ],
110 | [
111 | 10,
112 | 0
113 | ],
114 | [
115 | 15,
116 | 5
117 | ],
118 | [
119 | 20,
120 | -5
121 | ],
122 | [
123 | 15,
124 | -15
125 | ],
126 | [
127 | 5,
128 | -25
129 | ],
130 | [
131 | 0,
132 | -15
133 | ],
134 | [
135 | -10,
136 | -10
137 | ],
138 | [
139 | -15,
140 | -5
141 | ],
142 | [
143 | -20,
144 | 5
145 | ]
146 | ],
147 | "polygons": [
148 | [
149 | [
150 | 20,
151 | -5
152 | ],
153 | [
154 | 15,
155 | -15
156 | ],
157 | [
158 | 0,
159 | -15
160 | ],
161 | [
162 | -10,
163 | -10
164 | ],
165 | [
166 | -15,
167 | -5
168 | ],
169 | [
170 | -20,
171 | 5
172 | ],
173 | [
174 | -10,
175 | 10
176 | ],
177 | [
178 | 10,
179 | 0
180 | ]
181 | ],
182 | [
183 | [
184 | 0,
185 | 25
186 | ],
187 | [
188 | 5,
189 | 15
190 | ],
191 | [
192 | 10,
193 | 0
194 | ],
195 | [
196 | -10,
197 | 10
198 | ],
199 | [
200 | -5,
201 | 20
202 | ]
203 | ],
204 | [
205 | [
206 | 5,
207 | -25
208 | ],
209 | [
210 | 0,
211 | -15
212 | ],
213 | [
214 | 15,
215 | -15
216 | ]
217 | ],
218 | [
219 | [
220 | 20,
221 | -5
222 | ],
223 | [
224 | 10,
225 | 0
226 | ],
227 | [
228 | 15,
229 | 5
230 | ]
231 | ]
232 | ]
233 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_33.json:
--------------------------------------------------------------------------------
1 | {
2 | "polygons": [
3 | [
4 | [
5 | 0,
6 | 0
7 | ],
8 | [
9 | -5,
10 | -5
11 | ],
12 | [
13 | -10,
14 | -5
15 | ],
16 | [
17 | -10,
18 | 5
19 | ],
20 | [
21 | -5,
22 | 5
23 | ]
24 | ],
25 | [
26 | [
27 | 10,
28 | 5
29 | ],
30 | [
31 | 10,
32 | -5
33 | ],
34 | [
35 | 5,
36 | -5
37 | ],
38 | [
39 | 0,
40 | 0
41 | ],
42 | [
43 | 5,
44 | 5
45 | ]
46 | ]
47 | ],
48 | "indices": [
49 | 0,
50 | 1,
51 | 4,
52 | 1,
53 | 2,
54 | 4,
55 | 4,
56 | 2,
57 | 3,
58 | 5,
59 | 6,
60 | 9,
61 | 9,
62 | 6,
63 | 8,
64 | 6,
65 | 7,
66 | 8
67 | ],
68 | "shape": [
69 | [
70 | [
71 | -10,
72 | 5
73 | ],
74 | [
75 | -5,
76 | 5
77 | ],
78 | [
79 | 0,
80 | 0
81 | ],
82 | [
83 | 5,
84 | 5
85 | ],
86 | [
87 | 10,
88 | 5
89 | ],
90 | [
91 | 10,
92 | -5
93 | ],
94 | [
95 | 5,
96 | -5
97 | ],
98 | [
99 | 0,
100 | 0
101 | ],
102 | [
103 | -5,
104 | -5
105 | ],
106 | [
107 | -10,
108 | -5
109 | ]
110 | ]
111 | ],
112 | "points": [
113 | [
114 | -10,
115 | -5
116 | ],
117 | [
118 | -10,
119 | 5
120 | ],
121 | [
122 | -5,
123 | 5
124 | ],
125 | [
126 | 0,
127 | 0
128 | ],
129 | [
130 | -5,
131 | -5
132 | ],
133 | [
134 | 5,
135 | 5
136 | ],
137 | [
138 | 10,
139 | 5
140 | ],
141 | [
142 | 10,
143 | -5
144 | ],
145 | [
146 | 5,
147 | -5
148 | ],
149 | [
150 | 0,
151 | 0
152 | ]
153 | ]
154 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_34.json:
--------------------------------------------------------------------------------
1 | {
2 | "shape": [
3 | [
4 | [
5 | -512,
6 | -5120
7 | ],
8 | [
9 | -10240,
10 | 0
11 | ],
12 | [
13 | -10240,
14 | 10240
15 | ],
16 | [
17 | 20480,
18 | 10240
19 | ],
20 | [
21 | 10240,
22 | 5120
23 | ],
24 | [
25 | 10240,
26 | 0
27 | ],
28 | [
29 | 5120,
30 | 5120
31 | ],
32 | [
33 | 0,
34 | -15360
35 | ]
36 | ]
37 | ],
38 | "indices": [
39 | 0,
40 | 1,
41 | 5,
42 | 6,
43 | 7,
44 | 5,
45 | 0,
46 | 5,
47 | 7,
48 | 4,
49 | 5,
50 | 3,
51 | 5,
52 | 1,
53 | 2,
54 | 5,
55 | 2,
56 | 3
57 | ],
58 | "points": [
59 | [
60 | -10240,
61 | 0
62 | ],
63 | [
64 | -10240,
65 | 10240
66 | ],
67 | [
68 | 20480,
69 | 10240
70 | ],
71 | [
72 | 10240,
73 | 5120
74 | ],
75 | [
76 | 10240,
77 | 0
78 | ],
79 | [
80 | 5120,
81 | 5120
82 | ],
83 | [
84 | 0,
85 | -15360
86 | ],
87 | [
88 | -512,
89 | -5120
90 | ]
91 | ],
92 | "polygons": [
93 | [
94 | [
95 | -512,
96 | -5120
97 | ],
98 | [
99 | -10240,
100 | 0
101 | ],
102 | [
103 | -10240,
104 | 10240
105 | ],
106 | [
107 | 5120,
108 | 5120
109 | ]
110 | ],
111 | [
112 | [
113 | 5120,
114 | 5120
115 | ],
116 | [
117 | 0,
118 | -15360
119 | ],
120 | [
121 | -512,
122 | -5120
123 | ]
124 | ],
125 | [
126 | [
127 | 10240,
128 | 5120
129 | ],
130 | [
131 | 10240,
132 | 0
133 | ],
134 | [
135 | 5120,
136 | 5120
137 | ]
138 | ],
139 | [
140 | [
141 | 10240,
142 | 5120
143 | ],
144 | [
145 | 5120,
146 | 5120
147 | ],
148 | [
149 | -10240,
150 | 10240
151 | ],
152 | [
153 | 20480,
154 | 10240
155 | ]
156 | ]
157 | ]
158 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_35.json:
--------------------------------------------------------------------------------
1 | {
2 | "shape": [
3 | [
4 | [
5 | -5,
6 | -5
7 | ],
8 | [
9 | -20,
10 | 10
11 | ],
12 | [
13 | 20,
14 | 10
15 | ],
16 | [
17 | 15,
18 | -5
19 | ],
20 | [
21 | 5,
22 | 5
23 | ],
24 | [
25 | 0,
26 | -15
27 | ]
28 | ]
29 | ],
30 | "indices": [
31 | 4,
32 | 5,
33 | 3,
34 | 5,
35 | 0,
36 | 3,
37 | 0,
38 | 1,
39 | 3,
40 | 3,
41 | 1,
42 | 2
43 | ],
44 | "points": [
45 | [
46 | 20,
47 | 10
48 | ],
49 | [
50 | 15,
51 | -5
52 | ],
53 | [
54 | 5,
55 | 5
56 | ],
57 | [
58 | 0,
59 | -15
60 | ],
61 | [
62 | -5,
63 | -5
64 | ],
65 | [
66 | -20,
67 | 10
68 | ]
69 | ],
70 | "polygons": [
71 | [
72 | [
73 | 5,
74 | 5
75 | ],
76 | [
77 | 0,
78 | -15
79 | ],
80 | [
81 | -5,
82 | -5
83 | ]
84 | ],
85 | [
86 | [
87 | 5,
88 | 5
89 | ],
90 | [
91 | -5,
92 | -5
93 | ],
94 | [
95 | -20,
96 | 10
97 | ]
98 | ],
99 | [
100 | [
101 | 5,
102 | 5
103 | ],
104 | [
105 | -20,
106 | 10
107 | ],
108 | [
109 | 20,
110 | 10
111 | ]
112 | ],
113 | [
114 | [
115 | 15,
116 | -5
117 | ],
118 | [
119 | 5,
120 | 5
121 | ],
122 | [
123 | 20,
124 | 10
125 | ]
126 | ]
127 | ]
128 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_36.json:
--------------------------------------------------------------------------------
1 | {
2 | "indices": [
3 | 0,
4 | 1,
5 | 7,
6 | 1,
7 | 2,
8 | 7,
9 | 7,
10 | 2,
11 | 6,
12 | 2,
13 | 3,
14 | 6,
15 | 6,
16 | 3,
17 | 4,
18 | 6,
19 | 4,
20 | 5
21 | ],
22 | "shape": [
23 | [
24 | [
25 | -150,
26 | 150
27 | ],
28 | [
29 | 30,
30 | 150
31 | ],
32 | [
33 | 50,
34 | 50
35 | ],
36 | [
37 | 100,
38 | -40
39 | ],
40 | [
41 | 170,
42 | -80
43 | ],
44 | [
45 | 90,
46 | -100
47 | ],
48 | [
49 | 85,
50 | -70
51 | ],
52 | [
53 | -50,
54 | 20
55 | ]
56 | ]
57 | ],
58 | "points": [
59 | [
60 | 30,
61 | 150
62 | ],
63 | [
64 | 50,
65 | 50
66 | ],
67 | [
68 | 100,
69 | -40
70 | ],
71 | [
72 | 170,
73 | -80
74 | ],
75 | [
76 | 90,
77 | -100
78 | ],
79 | [
80 | 85,
81 | -70
82 | ],
83 | [
84 | -50,
85 | 20
86 | ],
87 | [
88 | -150,
89 | 150
90 | ]
91 | ],
92 | "polygons": [
93 | [
94 | [
95 | 50,
96 | 50
97 | ],
98 | [
99 | -50,
100 | 20
101 | ],
102 | [
103 | -150,
104 | 150
105 | ],
106 | [
107 | 30,
108 | 150
109 | ]
110 | ],
111 | [
112 | [
113 | 100,
114 | -40
115 | ],
116 | [
117 | 85,
118 | -70
119 | ],
120 | [
121 | -50,
122 | 20
123 | ],
124 | [
125 | 50,
126 | 50
127 | ]
128 | ],
129 | [
130 | [
131 | 90,
132 | -100
133 | ],
134 | [
135 | 85,
136 | -70
137 | ],
138 | [
139 | 100,
140 | -40
141 | ],
142 | [
143 | 170,
144 | -80
145 | ]
146 | ]
147 | ]
148 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_37.json:
--------------------------------------------------------------------------------
1 | {
2 | "indices" : [
3 | 0,
4 | 1,
5 | 4,
6 | 0,
7 | 4,
8 | 5,
9 | 4,
10 | 1,
11 | 9,
12 | 10,
13 | 9,
14 | 2,
15 | 1,
16 | 2,
17 | 9,
18 | 10,
19 | 2,
20 | 13,
21 | 5,
22 | 6,
23 | 3,
24 | 11,
25 | 12,
26 | 6,
27 | 3,
28 | 12,
29 | 13,
30 | 5,
31 | 3,
32 | 0,
33 | 3,
34 | 6,
35 | 12,
36 | 13,
37 | 2,
38 | 3,
39 | 6,
40 | 7,
41 | 11,
42 | 7,
43 | 8,
44 | 11,
45 | 10,
46 | 8,
47 | 9,
48 | 10,
49 | 11,
50 | 8
51 | ],
52 | "polygons" : [
53 | [
54 | [
55 | -15,
56 | -25
57 | ],
58 | [
59 | -40,
60 | -40
61 | ],
62 | [
63 | -40,
64 | 40
65 | ],
66 | [
67 | -15,
68 | 20
69 | ]
70 | ],
71 | [
72 | [
73 | 40,
74 | 40
75 | ],
76 | [
77 | 5,
78 | 20
79 | ],
80 | [
81 | -15,
82 | 20
83 | ],
84 | [
85 | -40,
86 | 40
87 | ]
88 | ],
89 | [
90 | [
91 | 5,
92 | 10
93 | ],
94 | [
95 | 5,
96 | 20
97 | ],
98 | [
99 | 40,
100 | 40
101 | ],
102 | [
103 | 25,
104 | 0
105 | ],
106 | [
107 | 15,
108 | 5
109 | ]
110 | ],
111 | [
112 | [
113 | -40,
114 | -40
115 | ],
116 | [
117 | -15,
118 | -25
119 | ],
120 | [
121 | 5,
122 | -15
123 | ],
124 | [
125 | 40,
126 | -40
127 | ]
128 | ],
129 | [
130 | [
131 | -5,
132 | -5
133 | ],
134 | [
135 | 5,
136 | 0
137 | ],
138 | [
139 | 10,
140 | -10
141 | ],
142 | [
143 | 5,
144 | -15
145 | ]
146 | ],
147 | [
148 | [
149 | 5,
150 | -15
151 | ],
152 | [
153 | 10,
154 | -10
155 | ],
156 | [
157 | 25,
158 | 0
159 | ],
160 | [
161 | 40,
162 | -40
163 | ]
164 | ],
165 | [
166 | [
167 | 40,
168 | -40
169 | ],
170 | [
171 | 25,
172 | 0
173 | ],
174 | [
175 | 40,
176 | 40
177 | ]
178 | ],
179 | [
180 | [
181 | 15,
182 | 5
183 | ],
184 | [
185 | 5,
186 | 0
187 | ],
188 | [
189 | -5,
190 | -5
191 | ],
192 | [
193 | 5,
194 | 10
195 | ]
196 | ]
197 | ],
198 | "points" : [
199 | [
200 | -40,
201 | -40
202 | ],
203 | [
204 | -40,
205 | 40
206 | ],
207 | [
208 | 40,
209 | 40
210 | ],
211 | [
212 | 40,
213 | -40
214 | ],
215 | [
216 | -15,
217 | 20
218 | ],
219 | [
220 | -15,
221 | -25
222 | ],
223 | [
224 | 5,
225 | -15
226 | ],
227 | [
228 | -5,
229 | -5
230 | ],
231 | [
232 | 5,
233 | 10
234 | ],
235 | [
236 | 5,
237 | 20
238 | ],
239 | [
240 | 15,
241 | 5
242 | ],
243 | [
244 | 5,
245 | 0
246 | ],
247 | [
248 | 10,
249 | -10
250 | ],
251 | [
252 | 25,
253 | 0
254 | ]
255 | ],
256 | "shape" : [
257 | [
258 | [
259 | -40,
260 | 40
261 | ],
262 | [
263 | 40,
264 | 40
265 | ],
266 | [
267 | 40,
268 | -40
269 | ],
270 | [
271 | -40,
272 | -40
273 | ]
274 | ],
275 | [
276 | [
277 | 5,
278 | 0
279 | ],
280 | [
281 | 10,
282 | -10
283 | ],
284 | [
285 | 25,
286 | 0
287 | ],
288 | [
289 | 15,
290 | 5
291 | ]
292 | ],
293 | [
294 | [
295 | -15,
296 | -25
297 | ],
298 | [
299 | 5,
300 | -15
301 | ],
302 | [
303 | -5,
304 | -5
305 | ],
306 | [
307 | 5,
308 | 10
309 | ],
310 | [
311 | 5,
312 | 20
313 | ],
314 | [
315 | -15,
316 | 20
317 | ]
318 | ]
319 | ]
320 | }
321 |
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_38.json:
--------------------------------------------------------------------------------
1 | {
2 | "shape" : [
3 | [
4 | [
5 | -5,
6 | 0
7 | ],
8 | [
9 | -25,
10 | 15
11 | ],
12 | [
13 | 20,
14 | 15
15 | ],
16 | [
17 | 20,
18 | -15
19 | ],
20 | [
21 | -25,
22 | -15
23 | ]
24 | ],
25 | [
26 | [
27 | -15,
28 | -10
29 | ],
30 | [
31 | 10,
32 | -10
33 | ],
34 | [
35 | 10,
36 | 10
37 | ],
38 | [
39 | -10,
40 | 10
41 | ],
42 | [
43 | 0,
44 | 0
45 | ]
46 | ]
47 | ],
48 | "polygons" : [
49 | [
50 | [
51 | 0,
52 | 0
53 | ],
54 | [
55 | -15,
56 | -10
57 | ],
58 | [
59 | -25,
60 | -15
61 | ],
62 | [
63 | -5,
64 | 0
65 | ]
66 | ],
67 | [
68 | [
69 | 10,
70 | 10
71 | ],
72 | [
73 | -10,
74 | 10
75 | ],
76 | [
77 | -25,
78 | 15
79 | ],
80 | [
81 | 20,
82 | 15
83 | ]
84 | ],
85 | [
86 | [
87 | 20,
88 | -15
89 | ],
90 | [
91 | -25,
92 | -15
93 | ],
94 | [
95 | -15,
96 | -10
97 | ],
98 | [
99 | 10,
100 | -10
101 | ]
102 | ],
103 | [
104 | [
105 | 20,
106 | 15
107 | ],
108 | [
109 | 20,
110 | -15
111 | ],
112 | [
113 | 10,
114 | -10
115 | ],
116 | [
117 | 10,
118 | 10
119 | ]
120 | ],
121 | [
122 | [
123 | 0,
124 | 0
125 | ],
126 | [
127 | -5,
128 | 0
129 | ],
130 | [
131 | -25,
132 | 15
133 | ],
134 | [
135 | -10,
136 | 10
137 | ]
138 | ]
139 | ],
140 | "points" : [
141 | [
142 | -25,
143 | -15
144 | ],
145 | [
146 | -5,
147 | 0
148 | ],
149 | [
150 | -25,
151 | 15
152 | ],
153 | [
154 | 20,
155 | 15
156 | ],
157 | [
158 | 20,
159 | -15
160 | ],
161 | [
162 | 0,
163 | 0
164 | ],
165 | [
166 | -15,
167 | -10
168 | ],
169 | [
170 | 10,
171 | -10
172 | ],
173 | [
174 | 10,
175 | 10
176 | ],
177 | [
178 | -10,
179 | 10
180 | ]
181 | ],
182 | "indices" : [
183 | 0,
184 | 1,
185 | 6,
186 | 6,
187 | 1,
188 | 5,
189 | 9,
190 | 2,
191 | 3,
192 | 9,
193 | 3,
194 | 8,
195 | 6,
196 | 7,
197 | 0,
198 | 0,
199 | 7,
200 | 4,
201 | 7,
202 | 8,
203 | 4,
204 | 8,
205 | 3,
206 | 4,
207 | 2,
208 | 9,
209 | 1,
210 | 9,
211 | 5,
212 | 1
213 | ]
214 | }
215 |
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_4.json:
--------------------------------------------------------------------------------
1 | {
2 | "polygons" : [
3 | [
4 | [
5 | -10,
6 | 10
7 | ],
8 | [
9 | -10,
10 | -10
11 | ],
12 | [
13 | -20,
14 | -20
15 | ],
16 | [
17 | -20,
18 | 20
19 | ]
20 | ],
21 | [
22 | [
23 | 20,
24 | 20
25 | ],
26 | [
27 | 10,
28 | 10
29 | ],
30 | [
31 | -10,
32 | 10
33 | ],
34 | [
35 | -20,
36 | 20
37 | ]
38 | ],
39 | [
40 | [
41 | 20,
42 | -20
43 | ],
44 | [
45 | -20,
46 | -20
47 | ],
48 | [
49 | -10,
50 | -10
51 | ],
52 | [
53 | 10,
54 | -10
55 | ]
56 | ],
57 | [
58 | [
59 | 20,
60 | 20
61 | ],
62 | [
63 | 20,
64 | -20
65 | ],
66 | [
67 | 10,
68 | -10
69 | ],
70 | [
71 | 10,
72 | 10
73 | ]
74 | ]
75 | ],
76 | "shape" : [
77 | [
78 | [
79 | -20,
80 | -20
81 | ],
82 | [
83 | -20,
84 | 20
85 | ],
86 | [
87 | 20,
88 | 20
89 | ],
90 | [
91 | 20,
92 | -20
93 | ]
94 | ],
95 | [
96 | [
97 | -10,
98 | -10
99 | ],
100 | [
101 | 10,
102 | -10
103 | ],
104 | [
105 | 10,
106 | 10
107 | ],
108 | [
109 | -10,
110 | 10
111 | ]
112 | ]
113 | ],
114 | "indices" : [
115 | 0,
116 | 1,
117 | 5,
118 | 5,
119 | 1,
120 | 4,
121 | 4,
122 | 1,
123 | 7,
124 | 1,
125 | 2,
126 | 7,
127 | 5,
128 | 6,
129 | 0,
130 | 0,
131 | 6,
132 | 3,
133 | 6,
134 | 7,
135 | 3,
136 | 7,
137 | 2,
138 | 3
139 | ],
140 | "points" : [
141 | [
142 | -20,
143 | -20
144 | ],
145 | [
146 | -20,
147 | 20
148 | ],
149 | [
150 | 20,
151 | 20
152 | ],
153 | [
154 | 20,
155 | -20
156 | ],
157 | [
158 | -10,
159 | 10
160 | ],
161 | [
162 | -10,
163 | -10
164 | ],
165 | [
166 | 10,
167 | -10
168 | ],
169 | [
170 | 10,
171 | 10
172 | ]
173 | ]
174 | }
175 |
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_40.json:
--------------------------------------------------------------------------------
1 | {
2 | "indices" : [
3 | 0,
4 | 1,
5 | 9,
6 | 0,
7 | 9,
8 | 7,
9 | 1,
10 | 2,
11 | 9,
12 | 9,
13 | 2,
14 | 8,
15 | 8,
16 | 2,
17 | 3,
18 | 8,
19 | 3,
20 | 11,
21 | 9,
22 | 10,
23 | 7,
24 | 7,
25 | 10,
26 | 6,
27 | 10,
28 | 11,
29 | 6,
30 | 4,
31 | 11,
32 | 3,
33 | 11,
34 | 5,
35 | 6,
36 | 4,
37 | 5,
38 | 11
39 | ],
40 | "shape" : [
41 | [
42 | [
43 | -5,
44 | 10
45 | ],
46 | [
47 | 5,
48 | 10
49 | ],
50 | [
51 | 10,
52 | 5
53 | ],
54 | [
55 | 10,
56 | -5
57 | ],
58 | [
59 | 5,
60 | -10
61 | ],
62 | [
63 | -5,
64 | -10
65 | ],
66 | [
67 | -10,
68 | -5
69 | ],
70 | [
71 | -10,
72 | 5
73 | ]
74 | ],
75 | [
76 | [
77 | -5,
78 | 0
79 | ],
80 | [
81 | 0,
82 | -5
83 | ],
84 | [
85 | 5,
86 | 0
87 | ],
88 | [
89 | 0,
90 | 5
91 | ]
92 | ]
93 | ],
94 | "polygons" : [
95 | [
96 | [
97 | 5,
98 | -10
99 | ],
100 | [
101 | -5,
102 | -10
103 | ],
104 | [
105 | -10,
106 | -5
107 | ],
108 | [
109 | -10,
110 | 5
111 | ],
112 | [
113 | -5,
114 | 0
115 | ],
116 | [
117 | 0,
118 | -5
119 | ]
120 | ],
121 | [
122 | [
123 | 5,
124 | 10
125 | ],
126 | [
127 | 0,
128 | 5
129 | ],
130 | [
131 | -5,
132 | 0
133 | ],
134 | [
135 | -10,
136 | 5
137 | ],
138 | [
139 | -5,
140 | 10
141 | ]
142 | ],
143 | [
144 | [
145 | 10,
146 | -5
147 | ],
148 | [
149 | 5,
150 | 0
151 | ],
152 | [
153 | 0,
154 | 5
155 | ],
156 | [
157 | 5,
158 | 10
159 | ],
160 | [
161 | 10,
162 | 5
163 | ]
164 | ],
165 | [
166 | [
167 | 10,
168 | -5
169 | ],
170 | [
171 | 5,
172 | -10
173 | ],
174 | [
175 | 0,
176 | -5
177 | ],
178 | [
179 | 5,
180 | 0
181 | ]
182 | ]
183 | ],
184 | "points" : [
185 | [
186 | -10,
187 | -5
188 | ],
189 | [
190 | -10,
191 | 5
192 | ],
193 | [
194 | -5,
195 | 10
196 | ],
197 | [
198 | 5,
199 | 10
200 | ],
201 | [
202 | 10,
203 | 5
204 | ],
205 | [
206 | 10,
207 | -5
208 | ],
209 | [
210 | 5,
211 | -10
212 | ],
213 | [
214 | -5,
215 | -10
216 | ],
217 | [
218 | 0,
219 | 5
220 | ],
221 | [
222 | -5,
223 | 0
224 | ],
225 | [
226 | 0,
227 | -5
228 | ],
229 | [
230 | 5,
231 | 0
232 | ]
233 | ]
234 | }
235 |
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_41.json:
--------------------------------------------------------------------------------
1 | {
2 | "indices" : [
3 | 0,
4 | 1,
5 | 5,
6 | 5,
7 | 1,
8 | 4,
9 | 4,
10 | 1,
11 | 7,
12 | 1,
13 | 2,
14 | 7,
15 | 5,
16 | 6,
17 | 0,
18 | 0,
19 | 6,
20 | 3,
21 | 6,
22 | 7,
23 | 3,
24 | 7,
25 | 2,
26 | 3
27 | ],
28 | "polygons" : [
29 | [
30 | [
31 | -5,
32 | 5
33 | ],
34 | [
35 | -5,
36 | -5
37 | ],
38 | [
39 | -10,
40 | -10
41 | ],
42 | [
43 | -10,
44 | 10
45 | ]
46 | ],
47 | [
48 | [
49 | 10,
50 | 10
51 | ],
52 | [
53 | 5,
54 | 5
55 | ],
56 | [
57 | -5,
58 | 5
59 | ],
60 | [
61 | -10,
62 | 10
63 | ]
64 | ],
65 | [
66 | [
67 | 10,
68 | -10
69 | ],
70 | [
71 | -10,
72 | -10
73 | ],
74 | [
75 | -5,
76 | -5
77 | ],
78 | [
79 | 5,
80 | -5
81 | ]
82 | ],
83 | [
84 | [
85 | 10,
86 | 10
87 | ],
88 | [
89 | 10,
90 | -10
91 | ],
92 | [
93 | 5,
94 | -5
95 | ],
96 | [
97 | 5,
98 | 5
99 | ]
100 | ]
101 | ],
102 | "shape" : [
103 | [
104 | [
105 | -10,
106 | -10
107 | ],
108 | [
109 | -10,
110 | 10
111 | ],
112 | [
113 | 10,
114 | 10
115 | ],
116 | [
117 | 10,
118 | -10
119 | ]
120 | ],
121 | [
122 | [
123 | 0,
124 | -5
125 | ],
126 | [
127 | 5,
128 | -5
129 | ],
130 | [
131 | 5,
132 | 5
133 | ],
134 | [
135 | 0,
136 | 5
137 | ]
138 | ],
139 | [
140 | [
141 | -5,
142 | -5
143 | ],
144 | [
145 | 0,
146 | -5
147 | ],
148 | [
149 | 0,
150 | 5
151 | ],
152 | [
153 | -5,
154 | 5
155 | ]
156 | ]
157 | ],
158 | "points" : [
159 | [
160 | -10,
161 | -10
162 | ],
163 | [
164 | -10,
165 | 10
166 | ],
167 | [
168 | 10,
169 | 10
170 | ],
171 | [
172 | 10,
173 | -10
174 | ],
175 | [
176 | -5,
177 | 5
178 | ],
179 | [
180 | -5,
181 | -5
182 | ],
183 | [
184 | 5,
185 | -5
186 | ],
187 | [
188 | 5,
189 | 5
190 | ]
191 | ]
192 | }
193 |
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_42.json:
--------------------------------------------------------------------------------
1 | {
2 | "shape": [
3 | [
4 | [
5 | 0,
6 | 0
7 | ],
8 | [
9 | -5120,
10 | 5120
11 | ],
12 | [
13 | -5120,
14 | 10240
15 | ],
16 | [
17 | 5120,
18 | 10240
19 | ],
20 | [
21 | 5120,
22 | 5120
23 | ],
24 | [
25 | 0,
26 | 0
27 | ],
28 | [
29 | 5120,
30 | -5120
31 | ],
32 | [
33 | 5120,
34 | -10240
35 | ],
36 | [
37 | -5120,
38 | -10240
39 | ],
40 | [
41 | -5120,
42 | -5120
43 | ]
44 | ]
45 | ],
46 | "polygons": [
47 | [
48 | [
49 | -5120,
50 | -10240
51 | ],
52 | [
53 | -5120,
54 | -5120
55 | ],
56 | [
57 | 0,
58 | 0
59 | ],
60 | [
61 | 5120,
62 | -5120
63 | ],
64 | [
65 | 5120,
66 | -10240
67 | ]
68 | ],
69 | [
70 | [
71 | 5120,
72 | 10240
73 | ],
74 | [
75 | 5120,
76 | 5120
77 | ],
78 | [
79 | 0,
80 | 0
81 | ],
82 | [
83 | -5120,
84 | 5120
85 | ],
86 | [
87 | -5120,
88 | 10240
89 | ]
90 | ]
91 | ],
92 | "points": [
93 | [
94 | -5120,
95 | -10240
96 | ],
97 | [
98 | -5120,
99 | -5120
100 | ],
101 | [
102 | 0,
103 | 0
104 | ],
105 | [
106 | 5120,
107 | -5120
108 | ],
109 | [
110 | 5120,
111 | -10240
112 | ],
113 | [
114 | -5120,
115 | 5120
116 | ],
117 | [
118 | -5120,
119 | 10240
120 | ],
121 | [
122 | 5120,
123 | 10240
124 | ],
125 | [
126 | 5120,
127 | 5120
128 | ],
129 | [
130 | 0,
131 | 0
132 | ]
133 | ],
134 | "indices": [
135 | 3,
136 | 1,
137 | 2,
138 | 1,
139 | 4,
140 | 0,
141 | 3,
142 | 4,
143 | 1,
144 | 5,
145 | 6,
146 | 8,
147 | 5,
148 | 8,
149 | 9,
150 | 6,
151 | 7,
152 | 8
153 | ]
154 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_43.json:
--------------------------------------------------------------------------------
1 | {
2 | "indices" : [
3 | 0,
4 | 1,
5 | 5,
6 | 5,
7 | 1,
8 | 4,
9 | 11,
10 | 4,
11 | 10,
12 | 4,
13 | 1,
14 | 10,
15 | 1,
16 | 2,
17 | 10,
18 | 10,
19 | 2,
20 | 9,
21 | 5,
22 | 6,
23 | 0,
24 | 7,
25 | 8,
26 | 6,
27 | 6,
28 | 8,
29 | 0,
30 | 0,
31 | 8,
32 | 3,
33 | 8,
34 | 9,
35 | 3,
36 | 9,
37 | 2,
38 | 3
39 | ],
40 | "polygons" : [
41 | [
42 | [
43 | -10,
44 | 0
45 | ],
46 | [
47 | -15,
48 | -10
49 | ],
50 | [
51 | -15,
52 | 10
53 | ]
54 | ],
55 | [
56 | [
57 | -5,
58 | 5
59 | ],
60 | [
61 | -10,
62 | 0
63 | ],
64 | [
65 | -15,
66 | 10
67 | ]
68 | ],
69 | [
70 | [
71 | 5,
72 | 5
73 | ],
74 | [
75 | 0,
76 | 0
77 | ],
78 | [
79 | -5,
80 | 5
81 | ]
82 | ],
83 | [
84 | [
85 | 15,
86 | 10
87 | ],
88 | [
89 | 5,
90 | 5
91 | ],
92 | [
93 | -5,
94 | 5
95 | ],
96 | [
97 | -15,
98 | 10
99 | ]
100 | ],
101 | [
102 | [
103 | 10,
104 | 0
105 | ],
106 | [
107 | 5,
108 | 5
109 | ],
110 | [
111 | 15,
112 | 10
113 | ]
114 | ],
115 | [
116 | [
117 | -15,
118 | -10
119 | ],
120 | [
121 | -10,
122 | 0
123 | ],
124 | [
125 | -5,
126 | -5
127 | ]
128 | ],
129 | [
130 | [
131 | -5,
132 | -5
133 | ],
134 | [
135 | 0,
136 | 0
137 | ],
138 | [
139 | 5,
140 | -5
141 | ]
142 | ],
143 | [
144 | [
145 | 15,
146 | -10
147 | ],
148 | [
149 | -15,
150 | -10
151 | ],
152 | [
153 | -5,
154 | -5
155 | ],
156 | [
157 | 5,
158 | -5
159 | ]
160 | ],
161 | [
162 | [
163 | 15,
164 | -10
165 | ],
166 | [
167 | 5,
168 | -5
169 | ],
170 | [
171 | 10,
172 | 0
173 | ]
174 | ],
175 | [
176 | [
177 | 15,
178 | -10
179 | ],
180 | [
181 | 10,
182 | 0
183 | ],
184 | [
185 | 15,
186 | 10
187 | ]
188 | ]
189 | ],
190 | "points" : [
191 | [
192 | -15,
193 | -10
194 | ],
195 | [
196 | -15,
197 | 10
198 | ],
199 | [
200 | 15,
201 | 10
202 | ],
203 | [
204 | 15,
205 | -10
206 | ],
207 | [
208 | -5,
209 | 5
210 | ],
211 | [
212 | -10,
213 | 0
214 | ],
215 | [
216 | -5,
217 | -5
218 | ],
219 | [
220 | 0,
221 | 0
222 | ],
223 | [
224 | 5,
225 | -5
226 | ],
227 | [
228 | 10,
229 | 0
230 | ],
231 | [
232 | 5,
233 | 5
234 | ],
235 | [
236 | 0,
237 | 0
238 | ]
239 | ],
240 | "shape" : [
241 | [
242 | [
243 | -15,
244 | -10
245 | ],
246 | [
247 | -15,
248 | 10
249 | ],
250 | [
251 | 15,
252 | 10
253 | ],
254 | [
255 | 15,
256 | -10
257 | ]
258 | ],
259 | [
260 | [
261 | -10,
262 | 0
263 | ],
264 | [
265 | -5,
266 | -5
267 | ],
268 | [
269 | 0,
270 | 0
271 | ],
272 | [
273 | -5,
274 | 5
275 | ]
276 | ],
277 | [
278 | [
279 | 0,
280 | 0
281 | ],
282 | [
283 | 5,
284 | -5
285 | ],
286 | [
287 | 10,
288 | 0
289 | ],
290 | [
291 | 5,
292 | 5
293 | ]
294 | ]
295 | ]
296 | }
297 |
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_44.json:
--------------------------------------------------------------------------------
1 | {
2 | "shape" : [
3 | [
4 | [
5 | -10,
6 | 15
7 | ],
8 | [
9 | 10,
10 | 15
11 | ],
12 | [
13 | 10,
14 | -15
15 | ],
16 | [
17 | -10,
18 | -15
19 | ]
20 | ],
21 | [
22 | [
23 | -5,
24 | 5
25 | ],
26 | [
27 | 0,
28 | 0
29 | ],
30 | [
31 | 5,
32 | 5
33 | ],
34 | [
35 | 0,
36 | 10
37 | ]
38 | ],
39 | [
40 | [
41 | -5,
42 | -5
43 | ],
44 | [
45 | 0,
46 | -10
47 | ],
48 | [
49 | 5,
50 | -5
51 | ],
52 | [
53 | 0,
54 | 0
55 | ]
56 | ]
57 | ],
58 | "polygons" : [
59 | [
60 | [
61 | -5,
62 | 5
63 | ],
64 | [
65 | -5,
66 | -5
67 | ],
68 | [
69 | -10,
70 | -15
71 | ],
72 | [
73 | -10,
74 | 15
75 | ]
76 | ],
77 | [
78 | [
79 | 0,
80 | 10
81 | ],
82 | [
83 | -5,
84 | 5
85 | ],
86 | [
87 | -10,
88 | 15
89 | ]
90 | ],
91 | [
92 | [
93 | 0,
94 | 10
95 | ],
96 | [
97 | -10,
98 | 15
99 | ],
100 | [
101 | 10,
102 | 15
103 | ]
104 | ],
105 | [
106 | [
107 | 5,
108 | 5
109 | ],
110 | [
111 | 0,
112 | 10
113 | ],
114 | [
115 | 10,
116 | 15
117 | ]
118 | ],
119 | [
120 | [
121 | -10,
122 | -15
123 | ],
124 | [
125 | -5,
126 | -5
127 | ],
128 | [
129 | 0,
130 | -10
131 | ]
132 | ],
133 | [
134 | [
135 | 10,
136 | -15
137 | ],
138 | [
139 | -10,
140 | -15
141 | ],
142 | [
143 | 0,
144 | -10
145 | ]
146 | ],
147 | [
148 | [
149 | 10,
150 | -15
151 | ],
152 | [
153 | 0,
154 | -10
155 | ],
156 | [
157 | 5,
158 | -5
159 | ]
160 | ],
161 | [
162 | [
163 | 10,
164 | 15
165 | ],
166 | [
167 | 10,
168 | -15
169 | ],
170 | [
171 | 5,
172 | -5
173 | ],
174 | [
175 | 5,
176 | 5
177 | ]
178 | ],
179 | [
180 | [
181 | 0,
182 | 0
183 | ],
184 | [
185 | 0,
186 | 0
187 | ],
188 | [
189 | -5,
190 | -5
191 | ],
192 | [
193 | -5,
194 | 5
195 | ]
196 | ],
197 | [
198 | [
199 | 5,
200 | 5
201 | ],
202 | [
203 | 5,
204 | -5
205 | ],
206 | [
207 | 0,
208 | 0
209 | ],
210 | [
211 | 0,
212 | 0
213 | ]
214 | ]
215 | ],
216 | "points" : [
217 | [
218 | -10,
219 | -15
220 | ],
221 | [
222 | -10,
223 | 15
224 | ],
225 | [
226 | 10,
227 | 15
228 | ],
229 | [
230 | 10,
231 | -15
232 | ],
233 | [
234 | 0,
235 | 0
236 | ],
237 | [
238 | -5,
239 | -5
240 | ],
241 | [
242 | 0,
243 | -10
244 | ],
245 | [
246 | 5,
247 | -5
248 | ],
249 | [
250 | 0,
251 | 10
252 | ],
253 | [
254 | -5,
255 | 5
256 | ],
257 | [
258 | 0,
259 | 0
260 | ],
261 | [
262 | 5,
263 | 5
264 | ]
265 | ],
266 | "indices" : [
267 | 0,
268 | 1,
269 | 5,
270 | 5,
271 | 1,
272 | 9,
273 | 9,
274 | 1,
275 | 8,
276 | 1,
277 | 2,
278 | 8,
279 | 8,
280 | 2,
281 | 11,
282 | 5,
283 | 6,
284 | 0,
285 | 0,
286 | 6,
287 | 3,
288 | 6,
289 | 7,
290 | 3,
291 | 7,
292 | 11,
293 | 3,
294 | 11,
295 | 2,
296 | 3,
297 | 5,
298 | 9,
299 | 4,
300 | 9,
301 | 10,
302 | 4,
303 | 4,
304 | 10,
305 | 7,
306 | 10,
307 | 11,
308 | 7
309 | ]
310 | }
311 |
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_45.json:
--------------------------------------------------------------------------------
1 | {
2 | "points": [
3 | [
4 | -10,
5 | -10
6 | ],
7 | [
8 | -10,
9 | 10
10 | ],
11 | [
12 | -5,
13 | 10
14 | ],
15 | [
16 | 0,
17 | 5
18 | ],
19 | [
20 | -5,
21 | 0
22 | ],
23 | [
24 | 0,
25 | -5
26 | ],
27 | [
28 | 5,
29 | 0
30 | ],
31 | [
32 | 0,
33 | 5
34 | ],
35 | [
36 | 5,
37 | 10
38 | ],
39 | [
40 | 10,
41 | 10
42 | ],
43 | [
44 | 10,
45 | -10
46 | ]
47 | ],
48 | "shape": [
49 | [
50 | [
51 | -10,
52 | 10
53 | ],
54 | [
55 | -5,
56 | 10
57 | ],
58 | [
59 | 0,
60 | 5
61 | ],
62 | [
63 | 5,
64 | 10
65 | ],
66 | [
67 | 10,
68 | 10
69 | ],
70 | [
71 | 10,
72 | -10
73 | ],
74 | [
75 | -10,
76 | -10
77 | ]
78 | ],
79 | [
80 | [
81 | -5,
82 | 0
83 | ],
84 | [
85 | 0,
86 | -5
87 | ],
88 | [
89 | 5,
90 | 0
91 | ],
92 | [
93 | 0,
94 | 5
95 | ]
96 | ]
97 | ],
98 | "indices": [
99 | 0,
100 | 1,
101 | 4,
102 | 1,
103 | 2,
104 | 4,
105 | 4,
106 | 2,
107 | 3,
108 | 4,
109 | 5,
110 | 0,
111 | 0,
112 | 5,
113 | 10,
114 | 5,
115 | 6,
116 | 10,
117 | 6,
118 | 8,
119 | 9,
120 | 6,
121 | 9,
122 | 10,
123 | 7,
124 | 8,
125 | 6
126 | ],
127 | "polygons": [
128 | [
129 | [
130 | -5,
131 | 10
132 | ],
133 | [
134 | -5,
135 | 0
136 | ],
137 | [
138 | -10,
139 | -10
140 | ],
141 | [
142 | -10,
143 | 10
144 | ]
145 | ],
146 | [
147 | [
148 | 0,
149 | 5
150 | ],
151 | [
152 | -5,
153 | 0
154 | ],
155 | [
156 | -5,
157 | 10
158 | ]
159 | ],
160 | [
161 | [
162 | -10,
163 | -10
164 | ],
165 | [
166 | -5,
167 | 0
168 | ],
169 | [
170 | 0,
171 | -5
172 | ]
173 | ],
174 | [
175 | [
176 | 10,
177 | -10
178 | ],
179 | [
180 | -10,
181 | -10
182 | ],
183 | [
184 | 0,
185 | -5
186 | ]
187 | ],
188 | [
189 | [
190 | 10,
191 | -10
192 | ],
193 | [
194 | 0,
195 | -5
196 | ],
197 | [
198 | 5,
199 | 0
200 | ]
201 | ],
202 | [
203 | [
204 | 10,
205 | -10
206 | ],
207 | [
208 | 5,
209 | 0
210 | ],
211 | [
212 | 5,
213 | 10
214 | ],
215 | [
216 | 10,
217 | 10
218 | ]
219 | ],
220 | [
221 | [
222 | 5,
223 | 0
224 | ],
225 | [
226 | 0,
227 | 5
228 | ],
229 | [
230 | 5,
231 | 10
232 | ]
233 | ]
234 | ]
235 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_46.json:
--------------------------------------------------------------------------------
1 | {
2 | "polygons": [
3 | [
4 | [
5 | -5,
6 | -10
7 | ],
8 | [
9 | -10,
10 | -10
11 | ],
12 | [
13 | -10,
14 | 10
15 | ],
16 | [
17 | -5,
18 | 0
19 | ]
20 | ],
21 | [
22 | [
23 | 0,
24 | 5
25 | ],
26 | [
27 | -5,
28 | 0
29 | ],
30 | [
31 | -10,
32 | 10
33 | ]
34 | ],
35 | [
36 | [
37 | 0,
38 | 5
39 | ],
40 | [
41 | -10,
42 | 10
43 | ],
44 | [
45 | 10,
46 | 10
47 | ]
48 | ],
49 | [
50 | [
51 | 5,
52 | 0
53 | ],
54 | [
55 | 0,
56 | 5
57 | ],
58 | [
59 | 10,
60 | 10
61 | ]
62 | ],
63 | [
64 | [
65 | 0,
66 | -5
67 | ],
68 | [
69 | -5,
70 | -10
71 | ],
72 | [
73 | -5,
74 | 0
75 | ]
76 | ],
77 | [
78 | [
79 | 10,
80 | -10
81 | ],
82 | [
83 | 5,
84 | -10
85 | ],
86 | [
87 | 0,
88 | -5
89 | ],
90 | [
91 | 5,
92 | 0
93 | ]
94 | ],
95 | [
96 | [
97 | 10,
98 | -10
99 | ],
100 | [
101 | 5,
102 | 0
103 | ],
104 | [
105 | 10,
106 | 10
107 | ]
108 | ]
109 | ],
110 | "points": [
111 | [
112 | -10,
113 | -10
114 | ],
115 | [
116 | -10,
117 | 10
118 | ],
119 | [
120 | 10,
121 | 10
122 | ],
123 | [
124 | 10,
125 | -10
126 | ],
127 | [
128 | 5,
129 | -10
130 | ],
131 | [
132 | 0,
133 | -5
134 | ],
135 | [
136 | 5,
137 | 0
138 | ],
139 | [
140 | 0,
141 | 5
142 | ],
143 | [
144 | -5,
145 | 0
146 | ],
147 | [
148 | 0,
149 | -5
150 | ],
151 | [
152 | -5,
153 | -10
154 | ]
155 | ],
156 | "shape": [
157 | [
158 | [
159 | -10,
160 | 10
161 | ],
162 | [
163 | 10,
164 | 10
165 | ],
166 | [
167 | 10,
168 | -10
169 | ],
170 | [
171 | 5,
172 | -10
173 | ],
174 | [
175 | 0,
176 | -5
177 | ],
178 | [
179 | -5,
180 | -10
181 | ],
182 | [
183 | -10,
184 | -10
185 | ]
186 | ],
187 | [
188 | [
189 | -5,
190 | 0
191 | ],
192 | [
193 | 0,
194 | -5
195 | ],
196 | [
197 | 5,
198 | 0
199 | ],
200 | [
201 | 0,
202 | 5
203 | ]
204 | ]
205 | ],
206 | "indices": [
207 | 0,
208 | 1,
209 | 8,
210 | 0,
211 | 8,
212 | 10,
213 | 8,
214 | 1,
215 | 7,
216 | 1,
217 | 2,
218 | 7,
219 | 7,
220 | 2,
221 | 6,
222 | 10,
223 | 8,
224 | 9,
225 | 5,
226 | 6,
227 | 4,
228 | 4,
229 | 6,
230 | 3,
231 | 6,
232 | 2,
233 | 3
234 | ]
235 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_48.json:
--------------------------------------------------------------------------------
1 | {
2 | "shape": [
3 | [
4 | [
5 | -10,
6 | 10
7 | ],
8 | [
9 | 10,
10 | 10
11 | ],
12 | [
13 | 0,
14 | 5
15 | ],
16 | [
17 | 5,
18 | 0
19 | ],
20 | [
21 | 10,
22 | 10
23 | ],
24 | [
25 | 10,
26 | -10
27 | ],
28 | [
29 | -10,
30 | -10
31 | ]
32 | ]
33 | ],
34 | "indices": [
35 | 0,
36 | 1,
37 | 3,
38 | 1,
39 | 2,
40 | 3,
41 | 3,
42 | 4,
43 | 0,
44 | 0,
45 | 4,
46 | 6,
47 | 4,
48 | 5,
49 | 6
50 | ],
51 | "polygons": [
52 | [
53 | [
54 | 10,
55 | -10
56 | ],
57 | [
58 | -10,
59 | -10
60 | ],
61 | [
62 | -10,
63 | 10
64 | ],
65 | [
66 | 0,
67 | 5
68 | ],
69 | [
70 | 5,
71 | 0
72 | ]
73 | ],
74 | [
75 | [
76 | 0,
77 | 5
78 | ],
79 | [
80 | -10,
81 | 10
82 | ],
83 | [
84 | 10,
85 | 10
86 | ]
87 | ],
88 | [
89 | [
90 | 10,
91 | -10
92 | ],
93 | [
94 | 5,
95 | 0
96 | ],
97 | [
98 | 10,
99 | 10
100 | ]
101 | ]
102 | ],
103 | "points": [
104 | [
105 | -10,
106 | -10
107 | ],
108 | [
109 | -10,
110 | 10
111 | ],
112 | [
113 | 10,
114 | 10
115 | ],
116 | [
117 | 0,
118 | 5
119 | ],
120 | [
121 | 5,
122 | 0
123 | ],
124 | [
125 | 10,
126 | 10
127 | ],
128 | [
129 | 10,
130 | -10
131 | ]
132 | ]
133 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_49.json:
--------------------------------------------------------------------------------
1 | {
2 | "polygons": [
3 | [
4 | [
5 | 10,
6 | 10
7 | ],
8 | [
9 | 5,
10 | 0
11 | ],
12 | [
13 | 0,
14 | -5
15 | ],
16 | [
17 | -10,
18 | -10
19 | ],
20 | [
21 | -10,
22 | 10
23 | ]
24 | ],
25 | [
26 | [
27 | 10,
28 | -10
29 | ],
30 | [
31 | 5,
32 | 0
33 | ],
34 | [
35 | 10,
36 | 10
37 | ]
38 | ],
39 | [
40 | [
41 | 10,
42 | -10
43 | ],
44 | [
45 | -10,
46 | -10
47 | ],
48 | [
49 | 0,
50 | -5
51 | ]
52 | ]
53 | ],
54 | "shape": [
55 | [
56 | [
57 | 10,
58 | 10
59 | ],
60 | [
61 | 10,
62 | -10
63 | ],
64 | [
65 | 5,
66 | 0
67 | ],
68 | [
69 | 0,
70 | -5
71 | ],
72 | [
73 | 10,
74 | -10
75 | ],
76 | [
77 | -10,
78 | -10
79 | ],
80 | [
81 | -10,
82 | 10
83 | ]
84 | ]
85 | ],
86 | "indices": [
87 | 0,
88 | 1,
89 | 5,
90 | 5,
91 | 1,
92 | 4,
93 | 1,
94 | 2,
95 | 4,
96 | 4,
97 | 2,
98 | 3,
99 | 0,
100 | 5,
101 | 6
102 | ],
103 | "points": [
104 | [
105 | -10,
106 | -10
107 | ],
108 | [
109 | -10,
110 | 10
111 | ],
112 | [
113 | 10,
114 | 10
115 | ],
116 | [
117 | 10,
118 | -10
119 | ],
120 | [
121 | 5,
122 | 0
123 | ],
124 | [
125 | 0,
126 | -5
127 | ],
128 | [
129 | 10,
130 | -10
131 | ]
132 | ]
133 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_5.json:
--------------------------------------------------------------------------------
1 | {
2 | "polygons" : [
3 | [
4 | [
5 | 0,
6 | 15
7 | ],
8 | [
9 | 0,
10 | 5
11 | ],
12 | [
13 | -5,
14 | 0
15 | ],
16 | [
17 | -15,
18 | 0
19 | ]
20 | ],
21 | [
22 | [
23 | 15,
24 | 0
25 | ],
26 | [
27 | 5,
28 | 0
29 | ],
30 | [
31 | 0,
32 | 5
33 | ],
34 | [
35 | 0,
36 | 15
37 | ]
38 | ],
39 | [
40 | [
41 | 0,
42 | -5
43 | ],
44 | [
45 | 0,
46 | -15
47 | ],
48 | [
49 | -15,
50 | 0
51 | ],
52 | [
53 | -5,
54 | 0
55 | ]
56 | ],
57 | [
58 | [
59 | 15,
60 | 0
61 | ],
62 | [
63 | 0,
64 | -15
65 | ],
66 | [
67 | 0,
68 | -5
69 | ],
70 | [
71 | 5,
72 | 0
73 | ]
74 | ]
75 | ],
76 | "indices" : [
77 | 5,
78 | 0,
79 | 4,
80 | 0,
81 | 1,
82 | 4,
83 | 4,
84 | 1,
85 | 7,
86 | 1,
87 | 2,
88 | 7,
89 | 0,
90 | 5,
91 | 3,
92 | 5,
93 | 6,
94 | 3,
95 | 6,
96 | 7,
97 | 3,
98 | 3,
99 | 7,
100 | 2
101 | ],
102 | "points" : [
103 | [
104 | -15,
105 | 0
106 | ],
107 | [
108 | 0,
109 | 15
110 | ],
111 | [
112 | 15,
113 | 0
114 | ],
115 | [
116 | 0,
117 | -15
118 | ],
119 | [
120 | 0,
121 | 5
122 | ],
123 | [
124 | -5,
125 | 0
126 | ],
127 | [
128 | 0,
129 | -5
130 | ],
131 | [
132 | 5,
133 | 0
134 | ]
135 | ],
136 | "shape" : [
137 | [
138 | [
139 | -15,
140 | 0
141 | ],
142 | [
143 | 0,
144 | 15
145 | ],
146 | [
147 | 15,
148 | 0
149 | ],
150 | [
151 | 0,
152 | -15
153 | ]
154 | ],
155 | [
156 | [
157 | -5,
158 | 0
159 | ],
160 | [
161 | 0,
162 | -5
163 | ],
164 | [
165 | 5,
166 | 0
167 | ],
168 | [
169 | 0,
170 | 5
171 | ]
172 | ]
173 | ]
174 | }
175 |
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_50.json:
--------------------------------------------------------------------------------
1 | {
2 | "points" : [
3 | [
4 | -10,
5 | -10
6 | ],
7 | [
8 | -10,
9 | 10
10 | ],
11 | [
12 | 10,
13 | 10
14 | ],
15 | [
16 | 10,
17 | -10
18 | ],
19 | [
20 | -5,
21 | 0
22 | ],
23 | [
24 | -10,
25 | -10
26 | ],
27 | [
28 | 0,
29 | -5
30 | ]
31 | ],
32 | "indices" : [
33 | 0,
34 | 1,
35 | 5,
36 | 5,
37 | 1,
38 | 4,
39 | 4,
40 | 1,
41 | 2,
42 | 4,
43 | 2,
44 | 6,
45 | 5,
46 | 6,
47 | 0,
48 | 0,
49 | 6,
50 | 3,
51 | 6,
52 | 2,
53 | 3
54 | ],
55 | "shape" : [
56 | [
57 | [
58 | 10,
59 | 10
60 | ],
61 | [
62 | 10,
63 | -10
64 | ],
65 | [
66 | -10,
67 | -10
68 | ],
69 | [
70 | 0,
71 | -5
72 | ],
73 | [
74 | -5,
75 | 0
76 | ],
77 | [
78 | -10,
79 | -10
80 | ],
81 | [
82 | -10,
83 | 10
84 | ]
85 | ]
86 | ],
87 | "polygons" : [
88 | [
89 | [
90 | -5,
91 | 0
92 | ],
93 | [
94 | -10,
95 | -10
96 | ],
97 | [
98 | -10,
99 | -10
100 | ],
101 | [
102 | -10,
103 | 10
104 | ]
105 | ],
106 | [
107 | [
108 | 10,
109 | -10
110 | ],
111 | [
112 | 0,
113 | -5
114 | ],
115 | [
116 | -5,
117 | 0
118 | ],
119 | [
120 | -10,
121 | 10
122 | ],
123 | [
124 | 10,
125 | 10
126 | ]
127 | ],
128 | [
129 | [
130 | 10,
131 | -10
132 | ],
133 | [
134 | -10,
135 | -10
136 | ],
137 | [
138 | -10,
139 | -10
140 | ],
141 | [
142 | 0,
143 | -5
144 | ]
145 | ]
146 | ]
147 | }
148 |
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_51.json:
--------------------------------------------------------------------------------
1 | {
2 | "points": [
3 | [
4 | -10,
5 | -10
6 | ],
7 | [
8 | -10,
9 | 10
10 | ],
11 | [
12 | -5,
13 | 0
14 | ],
15 | [
16 | 0,
17 | 5
18 | ],
19 | [
20 | -10,
21 | 10
22 | ],
23 | [
24 | 10,
25 | 10
26 | ],
27 | [
28 | 10,
29 | -10
30 | ]
31 | ],
32 | "shape": [
33 | [
34 | [
35 | -10,
36 | 10
37 | ],
38 | [
39 | -5,
40 | 0
41 | ],
42 | [
43 | 0,
44 | 5
45 | ],
46 | [
47 | -10,
48 | 10
49 | ],
50 | [
51 | 10,
52 | 10
53 | ],
54 | [
55 | 10,
56 | -10
57 | ],
58 | [
59 | -10,
60 | -10
61 | ]
62 | ]
63 | ],
64 | "indices": [
65 | 1,
66 | 2,
67 | 0,
68 | 2,
69 | 3,
70 | 6,
71 | 2,
72 | 6,
73 | 0,
74 | 3,
75 | 5,
76 | 6,
77 | 4,
78 | 5,
79 | 3
80 | ],
81 | "polygons": [
82 | [
83 | [
84 | -10,
85 | -10
86 | ],
87 | [
88 | -10,
89 | 10
90 | ],
91 | [
92 | -5,
93 | 0
94 | ]
95 | ],
96 | [
97 | [
98 | 10,
99 | 10
100 | ],
101 | [
102 | 10,
103 | -10
104 | ],
105 | [
106 | -10,
107 | -10
108 | ],
109 | [
110 | -5,
111 | 0
112 | ],
113 | [
114 | 0,
115 | 5
116 | ]
117 | ],
118 | [
119 | [
120 | 0,
121 | 5
122 | ],
123 | [
124 | -10,
125 | 10
126 | ],
127 | [
128 | 10,
129 | 10
130 | ]
131 | ]
132 | ]
133 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_52.json:
--------------------------------------------------------------------------------
1 | {
2 | "indices": [
3 | 0,
4 | 1,
5 | 3,
6 | 3,
7 | 1,
8 | 2,
9 | 3,
10 | 5,
11 | 0,
12 | 0,
13 | 5,
14 | 6,
15 | 3,
16 | 4,
17 | 5
18 | ],
19 | "shape": [
20 | [
21 | [
22 | 10240,
23 | 10240
24 | ],
25 | [
26 | 10240,
27 | -5120
28 | ],
29 | [
30 | 1024,
31 | 0
32 | ],
33 | [
34 | 5120,
35 | -5120
36 | ],
37 | [
38 | 3072,
39 | -5120
40 | ],
41 | [
42 | 5120,
43 | -10240
44 | ],
45 | [
46 | -10240,
47 | -10240
48 | ]
49 | ]
50 | ],
51 | "points": [
52 | [
53 | 10240,
54 | 10240
55 | ],
56 | [
57 | 10240,
58 | -5120
59 | ],
60 | [
61 | 1024,
62 | 0
63 | ],
64 | [
65 | 5120,
66 | -5120
67 | ],
68 | [
69 | 3072,
70 | -5120
71 | ],
72 | [
73 | 5120,
74 | -10240
75 | ],
76 | [
77 | -10240,
78 | -10240
79 | ]
80 | ],
81 | "polygons": [
82 | [
83 | [
84 | 1024,
85 | 0
86 | ],
87 | [
88 | -10240,
89 | -10240
90 | ],
91 | [
92 | 10240,
93 | 10240
94 | ]
95 | ],
96 | [
97 | [
98 | 10240,
99 | -5120
100 | ],
101 | [
102 | 1024,
103 | 0
104 | ],
105 | [
106 | 10240,
107 | 10240
108 | ]
109 | ],
110 | [
111 | [
112 | 5120,
113 | -10240
114 | ],
115 | [
116 | -10240,
117 | -10240
118 | ],
119 | [
120 | 1024,
121 | 0
122 | ],
123 | [
124 | 3072,
125 | -5120
126 | ]
127 | ],
128 | [
129 | [
130 | 3072,
131 | -5120
132 | ],
133 | [
134 | 1024,
135 | 0
136 | ],
137 | [
138 | 5120,
139 | -5120
140 | ]
141 | ]
142 | ]
143 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_53.json:
--------------------------------------------------------------------------------
1 | {
2 | "points": [
3 | [
4 | 10240,
5 | 8192
6 | ],
7 | [
8 | 15360,
9 | -1024
10 | ],
11 | [
12 | 6144,
13 | 3072
14 | ],
15 | [
16 | 10240,
17 | 0
18 | ],
19 | [
20 | 8192,
21 | 0
22 | ],
23 | [
24 | 9216,
25 | -2048
26 | ],
27 | [
28 | -5120,
29 | -2048
30 | ]
31 | ],
32 | "polygons": [
33 | [
34 | [
35 | 6144,
36 | 3072
37 | ],
38 | [
39 | -5120,
40 | -2048
41 | ],
42 | [
43 | 10240,
44 | 8192
45 | ]
46 | ],
47 | [
48 | [
49 | 15360,
50 | -1024
51 | ],
52 | [
53 | 6144,
54 | 3072
55 | ],
56 | [
57 | 10240,
58 | 8192
59 | ]
60 | ],
61 | [
62 | [
63 | 9216,
64 | -2048
65 | ],
66 | [
67 | -5120,
68 | -2048
69 | ],
70 | [
71 | 6144,
72 | 3072
73 | ],
74 | [
75 | 8192,
76 | 0
77 | ]
78 | ],
79 | [
80 | [
81 | 8192,
82 | 0
83 | ],
84 | [
85 | 6144,
86 | 3072
87 | ],
88 | [
89 | 10240,
90 | 0
91 | ]
92 | ]
93 | ],
94 | "indices": [
95 | 0,
96 | 1,
97 | 3,
98 | 3,
99 | 1,
100 | 2,
101 | 3,
102 | 5,
103 | 0,
104 | 0,
105 | 5,
106 | 6,
107 | 3,
108 | 4,
109 | 5
110 | ],
111 | "shape": [
112 | [
113 | [
114 | 10240,
115 | 8192
116 | ],
117 | [
118 | 15360,
119 | -1024
120 | ],
121 | [
122 | 6144,
123 | 3072
124 | ],
125 | [
126 | 10240,
127 | 0
128 | ],
129 | [
130 | 8192,
131 | 0
132 | ],
133 | [
134 | 9216,
135 | -2048
136 | ],
137 | [
138 | -5120,
139 | -2048
140 | ]
141 | ]
142 | ]
143 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_55.json:
--------------------------------------------------------------------------------
1 | {
2 | "shape" : [
3 | [
4 | [
5 | -30,
6 | 0
7 | ],
8 | [
9 | -30,
10 | 30
11 | ],
12 | [
13 | 0,
14 | 30
15 | ],
16 | [
17 | 30,
18 | 30
19 | ],
20 | [
21 | 15,
22 | 0
23 | ],
24 | [
25 | 30,
26 | -30
27 | ],
28 | [
29 | 0,
30 | -30
31 | ],
32 | [
33 | -30,
34 | -30
35 | ]
36 | ],
37 | [
38 | [
39 | -15,
40 | -15
41 | ],
42 | [
43 | 18,
44 | -15
45 | ],
46 | [
47 | 10,
48 | 15
49 | ],
50 | [
51 | -15,
52 | 15
53 | ]
54 | ]
55 | ],
56 | "points" : [
57 | [
58 | -30,
59 | -30
60 | ],
61 | [
62 | -30,
63 | 30
64 | ],
65 | [
66 | 30,
67 | 30
68 | ],
69 | [
70 | 15,
71 | 0
72 | ],
73 | [
74 | 30,
75 | -30
76 | ],
77 | [
78 | -15,
79 | 15
80 | ],
81 | [
82 | -15,
83 | -15
84 | ],
85 | [
86 | 18,
87 | -15
88 | ],
89 | [
90 | 10,
91 | 15
92 | ]
93 | ],
94 | "indices" : [
95 | 0,
96 | 1,
97 | 6,
98 | 6,
99 | 1,
100 | 5,
101 | 5,
102 | 1,
103 | 8,
104 | 1,
105 | 2,
106 | 8,
107 | 8,
108 | 2,
109 | 3,
110 | 6,
111 | 7,
112 | 4,
113 | 6,
114 | 4,
115 | 0,
116 | 8,
117 | 3,
118 | 7,
119 | 3,
120 | 4,
121 | 7
122 | ],
123 | "polygons" : [
124 | [
125 | [
126 | -15,
127 | 15
128 | ],
129 | [
130 | -15,
131 | -15
132 | ],
133 | [
134 | -30,
135 | -30
136 | ],
137 | [
138 | -30,
139 | 30
140 | ]
141 | ],
142 | [
143 | [
144 | 30,
145 | 30
146 | ],
147 | [
148 | 10,
149 | 15
150 | ],
151 | [
152 | -15,
153 | 15
154 | ],
155 | [
156 | -30,
157 | 30
158 | ]
159 | ],
160 | [
161 | [
162 | 15,
163 | 0
164 | ],
165 | [
166 | 10,
167 | 15
168 | ],
169 | [
170 | 30,
171 | 30
172 | ]
173 | ],
174 | [
175 | [
176 | -30,
177 | -30
178 | ],
179 | [
180 | -15,
181 | -15
182 | ],
183 | [
184 | 18,
185 | -15
186 | ],
187 | [
188 | 30,
189 | -30
190 | ]
191 | ],
192 | [
193 | [
194 | 18,
195 | -15
196 | ],
197 | [
198 | 10,
199 | 15
200 | ],
201 | [
202 | 15,
203 | 0
204 | ]
205 | ],
206 | [
207 | [
208 | 18,
209 | -15
210 | ],
211 | [
212 | 15,
213 | 0
214 | ],
215 | [
216 | 30,
217 | -30
218 | ]
219 | ]
220 | ]
221 | }
222 |
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_56.json:
--------------------------------------------------------------------------------
1 | {
2 | "shape" : [
3 | [
4 | [
5 | -15,
6 | 0
7 | ],
8 | [
9 | -30,
10 | 30
11 | ],
12 | [
13 | 30,
14 | 30
15 | ],
16 | [
17 | 30,
18 | -30
19 | ],
20 | [
21 | 0,
22 | -30
23 | ],
24 | [
25 | -30,
26 | -30
27 | ]
28 | ],
29 | [
30 | [
31 | 10,
32 | -8
33 | ],
34 | [
35 | -10,
36 | -13
37 | ],
38 | [
39 | 19,
40 | -11
41 | ],
42 | [
43 | -12,
44 | 15
45 | ],
46 | [
47 | 19,
48 | 18
49 | ],
50 | [
51 | -20,
52 | 18
53 | ]
54 | ]
55 | ],
56 | "indices" : [
57 | 1,
58 | 8,
59 | 0,
60 | 8,
61 | 9,
62 | 4,
63 | 8,
64 | 4,
65 | 0,
66 | 9,
67 | 5,
68 | 3,
69 | 9,
70 | 3,
71 | 4,
72 | 6,
73 | 2,
74 | 5,
75 | 2,
76 | 3,
77 | 5,
78 | 2,
79 | 6,
80 | 1,
81 | 1,
82 | 6,
83 | 7,
84 | 1,
85 | 7,
86 | 8,
87 | 10,
88 | 5,
89 | 9
90 | ],
91 | "points" : [
92 | [
93 | -30,
94 | -30
95 | ],
96 | [
97 | -15,
98 | 0
99 | ],
100 | [
101 | -30,
102 | 30
103 | ],
104 | [
105 | 30,
106 | 30
107 | ],
108 | [
109 | 30,
110 | -30
111 | ],
112 | [
113 | 19,
114 | 18
115 | ],
116 | [
117 | -20,
118 | 18
119 | ],
120 | [
121 | 10,
122 | -8
123 | ],
124 | [
125 | -10,
126 | -13
127 | ],
128 | [
129 | 19,
130 | -11
131 | ],
132 | [
133 | -12,
134 | 15
135 | ]
136 | ],
137 | "polygons" : [
138 | [
139 | [
140 | -30,
141 | -30
142 | ],
143 | [
144 | -15,
145 | 0
146 | ],
147 | [
148 | -10,
149 | -13
150 | ]
151 | ],
152 | [
153 | [
154 | -30,
155 | -30
156 | ],
157 | [
158 | -10,
159 | -13
160 | ],
161 | [
162 | 19,
163 | -11
164 | ],
165 | [
166 | 30,
167 | -30
168 | ]
169 | ],
170 | [
171 | [
172 | 30,
173 | -30
174 | ],
175 | [
176 | 19,
177 | -11
178 | ],
179 | [
180 | 19,
181 | 18
182 | ],
183 | [
184 | 30,
185 | 30
186 | ]
187 | ],
188 | [
189 | [
190 | 30,
191 | 30
192 | ],
193 | [
194 | 19,
195 | 18
196 | ],
197 | [
198 | -20,
199 | 18
200 | ],
201 | [
202 | -30,
203 | 30
204 | ]
205 | ],
206 | [
207 | [
208 | -15,
209 | 0
210 | ],
211 | [
212 | -30,
213 | 30
214 | ],
215 | [
216 | -20,
217 | 18
218 | ]
219 | ],
220 | [
221 | [
222 | -10,
223 | -13
224 | ],
225 | [
226 | -15,
227 | 0
228 | ],
229 | [
230 | -20,
231 | 18
232 | ],
233 | [
234 | 10,
235 | -8
236 | ]
237 | ],
238 | [
239 | [
240 | 19,
241 | -11
242 | ],
243 | [
244 | -12,
245 | 15
246 | ],
247 | [
248 | 19,
249 | 18
250 | ]
251 | ]
252 | ]
253 | }
254 |
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_57.json:
--------------------------------------------------------------------------------
1 | {
2 | "shape" : [
3 | [
4 | [
5 | -15,
6 | 0
7 | ],
8 | [
9 | -30,
10 | 30
11 | ],
12 | [
13 | 0,
14 | 15
15 | ],
16 | [
17 | 30,
18 | 30
19 | ],
20 | [
21 | 15,
22 | 0
23 | ],
24 | [
25 | 30,
26 | -30
27 | ],
28 | [
29 | 0,
30 | -15
31 | ],
32 | [
33 | -30,
34 | -30
35 | ]
36 | ],
37 | [
38 | [
39 | -10,
40 | 0
41 | ],
42 | [
43 | 0,
44 | -10
45 | ],
46 | [
47 | 10,
48 | 0
49 | ],
50 | [
51 | 0,
52 | 10
53 | ]
54 | ]
55 | ],
56 | "indices" : [
57 | 1,
58 | 9,
59 | 7,
60 | 1,
61 | 7,
62 | 0,
63 | 9,
64 | 10,
65 | 7,
66 | 10,
67 | 11,
68 | 7,
69 | 11,
70 | 5,
71 | 7,
72 | 7,
73 | 5,
74 | 6,
75 | 3,
76 | 1,
77 | 2,
78 | 1,
79 | 8,
80 | 9,
81 | 3,
82 | 8,
83 | 1,
84 | 8,
85 | 3,
86 | 11,
87 | 11,
88 | 3,
89 | 5,
90 | 3,
91 | 4,
92 | 5
93 | ],
94 | "polygons" : [
95 | [
96 | [
97 | 0,
98 | -10
99 | ],
100 | [
101 | 0,
102 | -15
103 | ],
104 | [
105 | -30,
106 | -30
107 | ],
108 | [
109 | -15,
110 | 0
111 | ],
112 | [
113 | -10,
114 | 0
115 | ]
116 | ],
117 | [
118 | [
119 | 30,
120 | -30
121 | ],
122 | [
123 | 0,
124 | -15
125 | ],
126 | [
127 | 0,
128 | -10
129 | ],
130 | [
131 | 10,
132 | 0
133 | ],
134 | [
135 | 15,
136 | 0
137 | ]
138 | ],
139 | [
140 | [
141 | -10,
142 | 0
143 | ],
144 | [
145 | -15,
146 | 0
147 | ],
148 | [
149 | -30,
150 | 30
151 | ],
152 | [
153 | 0,
154 | 15
155 | ],
156 | [
157 | 0,
158 | 10
159 | ]
160 | ],
161 | [
162 | [
163 | 30,
164 | 30
165 | ],
166 | [
167 | 15,
168 | 0
169 | ],
170 | [
171 | 10,
172 | 0
173 | ],
174 | [
175 | 0,
176 | 10
177 | ],
178 | [
179 | 0,
180 | 15
181 | ]
182 | ]
183 | ],
184 | "points" : [
185 | [
186 | -30,
187 | -30
188 | ],
189 | [
190 | -15,
191 | 0
192 | ],
193 | [
194 | -30,
195 | 30
196 | ],
197 | [
198 | 0,
199 | 15
200 | ],
201 | [
202 | 30,
203 | 30
204 | ],
205 | [
206 | 15,
207 | 0
208 | ],
209 | [
210 | 30,
211 | -30
212 | ],
213 | [
214 | 0,
215 | -15
216 | ],
217 | [
218 | 0,
219 | 10
220 | ],
221 | [
222 | -10,
223 | 0
224 | ],
225 | [
226 | 0,
227 | -10
228 | ],
229 | [
230 | 10,
231 | 0
232 | ]
233 | ]
234 | }
235 |
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_58.json:
--------------------------------------------------------------------------------
1 | {
2 | "polygons" : [
3 | [
4 | [
5 | -10,
6 | 0
7 | ],
8 | [
9 | -20,
10 | -20
11 | ],
12 | [
13 | -30,
14 | -30
15 | ],
16 | [
17 | -15,
18 | 0
19 | ]
20 | ],
21 | [
22 | [
23 | 0,
24 | 10
25 | ],
26 | [
27 | -20,
28 | 20
29 | ],
30 | [
31 | -30,
32 | 30
33 | ],
34 | [
35 | 0,
36 | 15
37 | ]
38 | ],
39 | [
40 | [
41 | 30,
42 | 30
43 | ],
44 | [
45 | 20,
46 | 20
47 | ],
48 | [
49 | 0,
50 | 10
51 | ],
52 | [
53 | 0,
54 | 15
55 | ]
56 | ],
57 | [
58 | [
59 | 0,
60 | -10
61 | ],
62 | [
63 | 0,
64 | -15
65 | ],
66 | [
67 | -30,
68 | -30
69 | ],
70 | [
71 | -20,
72 | -20
73 | ]
74 | ],
75 | [
76 | [
77 | 30,
78 | -30
79 | ],
80 | [
81 | 0,
82 | -15
83 | ],
84 | [
85 | 0,
86 | -10
87 | ],
88 | [
89 | 20,
90 | -20
91 | ]
92 | ],
93 | [
94 | [
95 | -10,
96 | 0
97 | ],
98 | [
99 | -15,
100 | 0
101 | ],
102 | [
103 | -30,
104 | 30
105 | ],
106 | [
107 | -20,
108 | 20
109 | ]
110 | ],
111 | [
112 | [
113 | 30,
114 | 30
115 | ],
116 | [
117 | 15,
118 | 0
119 | ],
120 | [
121 | 10,
122 | 0
123 | ],
124 | [
125 | 20,
126 | 20
127 | ]
128 | ],
129 | [
130 | [
131 | 30,
132 | -30
133 | ],
134 | [
135 | 20,
136 | -20
137 | ],
138 | [
139 | 10,
140 | 0
141 | ],
142 | [
143 | 15,
144 | 0
145 | ]
146 | ]
147 | ],
148 | "indices" : [
149 | 0,
150 | 1,
151 | 9,
152 | 9,
153 | 1,
154 | 8,
155 | 15,
156 | 2,
157 | 3,
158 | 15,
159 | 3,
160 | 14,
161 | 14,
162 | 3,
163 | 13,
164 | 3,
165 | 4,
166 | 13,
167 | 0,
168 | 9,
169 | 7,
170 | 9,
171 | 10,
172 | 7,
173 | 10,
174 | 11,
175 | 7,
176 | 7,
177 | 11,
178 | 6,
179 | 2,
180 | 15,
181 | 1,
182 | 15,
183 | 8,
184 | 1,
185 | 12,
186 | 13,
187 | 5,
188 | 5,
189 | 13,
190 | 4,
191 | 12,
192 | 5,
193 | 11,
194 | 5,
195 | 6,
196 | 11
197 | ],
198 | "shape" : [
199 | [
200 | [
201 | -15,
202 | 0
203 | ],
204 | [
205 | -30,
206 | 30
207 | ],
208 | [
209 | 0,
210 | 15
211 | ],
212 | [
213 | 30,
214 | 30
215 | ],
216 | [
217 | 15,
218 | 0
219 | ],
220 | [
221 | 30,
222 | -30
223 | ],
224 | [
225 | 0,
226 | -15
227 | ],
228 | [
229 | -30,
230 | -30
231 | ]
232 | ],
233 | [
234 | [
235 | -10,
236 | 0
237 | ],
238 | [
239 | -20,
240 | -20
241 | ],
242 | [
243 | 0,
244 | -10
245 | ],
246 | [
247 | 20,
248 | -20
249 | ],
250 | [
251 | 10,
252 | 0
253 | ],
254 | [
255 | 20,
256 | 20
257 | ],
258 | [
259 | 0,
260 | 10
261 | ],
262 | [
263 | -20,
264 | 20
265 | ]
266 | ]
267 | ],
268 | "points" : [
269 | [
270 | -30,
271 | -30
272 | ],
273 | [
274 | -15,
275 | 0
276 | ],
277 | [
278 | -30,
279 | 30
280 | ],
281 | [
282 | 0,
283 | 15
284 | ],
285 | [
286 | 30,
287 | 30
288 | ],
289 | [
290 | 15,
291 | 0
292 | ],
293 | [
294 | 30,
295 | -30
296 | ],
297 | [
298 | 0,
299 | -15
300 | ],
301 | [
302 | -10,
303 | 0
304 | ],
305 | [
306 | -20,
307 | -20
308 | ],
309 | [
310 | 0,
311 | -10
312 | ],
313 | [
314 | 20,
315 | -20
316 | ],
317 | [
318 | 10,
319 | 0
320 | ],
321 | [
322 | 20,
323 | 20
324 | ],
325 | [
326 | 0,
327 | 10
328 | ],
329 | [
330 | -20,
331 | 20
332 | ]
333 | ]
334 | }
335 |
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_59.json:
--------------------------------------------------------------------------------
1 | {
2 | "polygons": [
3 | [
4 | [
5 | 20480,
6 | -20480
7 | ],
8 | [
9 | -20480,
10 | -20480
11 | ],
12 | [
13 | -20480,
14 | 20480
15 | ],
16 | [
17 | -10240,
18 | 10240
19 | ],
20 | [
21 | 0,
22 | 0
23 | ]
24 | ],
25 | [
26 | [
27 | 20480,
28 | 20480
29 | ],
30 | [
31 | 20480,
32 | -20480
33 | ],
34 | [
35 | 0,
36 | 0
37 | ],
38 | [
39 | 10240,
40 | 10240
41 | ]
42 | ],
43 | [
44 | [
45 | -10240,
46 | 10240
47 | ],
48 | [
49 | -20480,
50 | 20480
51 | ],
52 | [
53 | 0,
54 | 20480
55 | ]
56 | ],
57 | [
58 | [
59 | 10240,
60 | 10240
61 | ],
62 | [
63 | 0,
64 | 20480
65 | ],
66 | [
67 | 20480,
68 | 20480
69 | ]
70 | ]
71 | ],
72 | "indices": [
73 | 1,
74 | 3,
75 | 0,
76 | 3,
77 | 4,
78 | 0,
79 | 4,
80 | 5,
81 | 8,
82 | 4,
83 | 8,
84 | 0,
85 | 5,
86 | 7,
87 | 8,
88 | 1,
89 | 2,
90 | 3,
91 | 6,
92 | 7,
93 | 5
94 | ],
95 | "points": [
96 | [
97 | -20480,
98 | -20480
99 | ],
100 | [
101 | -20480,
102 | 20480
103 | ],
104 | [
105 | 0,
106 | 20480
107 | ],
108 | [
109 | -10240,
110 | 10240
111 | ],
112 | [
113 | 0,
114 | 0
115 | ],
116 | [
117 | 10240,
118 | 10240
119 | ],
120 | [
121 | 0,
122 | 20480
123 | ],
124 | [
125 | 20480,
126 | 20480
127 | ],
128 | [
129 | 20480,
130 | -20480
131 | ]
132 | ],
133 | "shape": [
134 | [
135 | [
136 | -20480,
137 | -20480
138 | ],
139 | [
140 | -20480,
141 | 20480
142 | ],
143 | [
144 | 20480,
145 | 20480
146 | ],
147 | [
148 | 20480,
149 | -20480
150 | ]
151 | ],
152 | [
153 | [
154 | 0,
155 | 20480
156 | ],
157 | [
158 | -10240,
159 | 10240
160 | ],
161 | [
162 | 0,
163 | 0
164 | ],
165 | [
166 | 10240,
167 | 10240
168 | ]
169 | ]
170 | ]
171 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_6.json:
--------------------------------------------------------------------------------
1 | {
2 | "points": [
3 | [
4 | -10,
5 | -10
6 | ],
7 | [
8 | 0,
9 | 0
10 | ],
11 | [
12 | -10,
13 | 10
14 | ],
15 | [
16 | 10,
17 | 0
18 | ]
19 | ],
20 | "indices": [
21 | 0,
22 | 1,
23 | 3,
24 | 2,
25 | 3,
26 | 1
27 | ],
28 | "shape": [
29 | [
30 | [
31 | -10,
32 | -10
33 | ],
34 | [
35 | 0,
36 | 0
37 | ],
38 | [
39 | -10,
40 | 10
41 | ],
42 | [
43 | 10,
44 | 0
45 | ]
46 | ]
47 | ],
48 | "polygons": [
49 | [
50 | [
51 | 10,
52 | 0
53 | ],
54 | [
55 | -10,
56 | -10
57 | ],
58 | [
59 | 0,
60 | 0
61 | ]
62 | ],
63 | [
64 | [
65 | 0,
66 | 0
67 | ],
68 | [
69 | -10,
70 | 10
71 | ],
72 | [
73 | 10,
74 | 0
75 | ]
76 | ]
77 | ]
78 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_60.json:
--------------------------------------------------------------------------------
1 | {
2 | "shape": [
3 | [
4 | [
5 | -20480,
6 | -20480
7 | ],
8 | [
9 | -20480,
10 | 20480
11 | ],
12 | [
13 | 20480,
14 | 20480
15 | ],
16 | [
17 | 20480,
18 | -20480
19 | ]
20 | ],
21 | [
22 | [
23 | 0,
24 | 20480
25 | ],
26 | [
27 | -10240,
28 | 10240
29 | ],
30 | [
31 | 10240,
32 | -10240
33 | ],
34 | [
35 | -10240,
36 | -10240
37 | ],
38 | [
39 | 10240,
40 | 10240
41 | ]
42 | ]
43 | ],
44 | "points": [
45 | [
46 | -20480,
47 | -20480
48 | ],
49 | [
50 | -20480,
51 | 20480
52 | ],
53 | [
54 | 0,
55 | 20480
56 | ],
57 | [
58 | -10240,
59 | 10240
60 | ],
61 | [
62 | 0,
63 | 0
64 | ],
65 | [
66 | -10240,
67 | -10240
68 | ],
69 | [
70 | 10240,
71 | -10240
72 | ],
73 | [
74 | 0,
75 | 0
76 | ],
77 | [
78 | 10240,
79 | 10240
80 | ],
81 | [
82 | 0,
83 | 20480
84 | ],
85 | [
86 | 20480,
87 | 20480
88 | ],
89 | [
90 | 20480,
91 | -20480
92 | ]
93 | ],
94 | "indices": [
95 | 0,
96 | 1,
97 | 5,
98 | 5,
99 | 1,
100 | 3,
101 | 1,
102 | 2,
103 | 3,
104 | 5,
105 | 6,
106 | 0,
107 | 0,
108 | 6,
109 | 11,
110 | 6,
111 | 8,
112 | 11,
113 | 8,
114 | 10,
115 | 11,
116 | 5,
117 | 3,
118 | 4,
119 | 7,
120 | 8,
121 | 6,
122 | 9,
123 | 10,
124 | 8
125 | ],
126 | "polygons": [
127 | [
128 | [
129 | 0,
130 | 0
131 | ],
132 | [
133 | -10240,
134 | -10240
135 | ],
136 | [
137 | -20480,
138 | -20480
139 | ],
140 | [
141 | -20480,
142 | 20480
143 | ],
144 | [
145 | -10240,
146 | 10240
147 | ]
148 | ],
149 | [
150 | [
151 | -10240,
152 | 10240
153 | ],
154 | [
155 | -20480,
156 | 20480
157 | ],
158 | [
159 | 0,
160 | 20480
161 | ]
162 | ],
163 | [
164 | [
165 | 20480,
166 | -20480
167 | ],
168 | [
169 | -20480,
170 | -20480
171 | ],
172 | [
173 | -10240,
174 | -10240
175 | ],
176 | [
177 | 10240,
178 | -10240
179 | ]
180 | ],
181 | [
182 | [
183 | 0,
184 | 0
185 | ],
186 | [
187 | 10240,
188 | 10240
189 | ],
190 | [
191 | 20480,
192 | 20480
193 | ],
194 | [
195 | 20480,
196 | -20480
197 | ],
198 | [
199 | 10240,
200 | -10240
201 | ]
202 | ],
203 | [
204 | [
205 | 10240,
206 | 10240
207 | ],
208 | [
209 | 0,
210 | 20480
211 | ],
212 | [
213 | 20480,
214 | 20480
215 | ]
216 | ]
217 | ]
218 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_61.json:
--------------------------------------------------------------------------------
1 | {
2 | "shape": [
3 | [
4 | [
5 | -20480,
6 | -20480
7 | ],
8 | [
9 | -20480,
10 | 20480
11 | ],
12 | [
13 | 20480,
14 | 20480
15 | ],
16 | [
17 | 20480,
18 | -20480
19 | ]
20 | ],
21 | [
22 | [
23 | 0,
24 | 20480
25 | ],
26 | [
27 | -10240,
28 | 10240
29 | ],
30 | [
31 | 10240,
32 | 10240
33 | ],
34 | [
35 | 0,
36 | 0
37 | ]
38 | ]
39 | ],
40 | "polygons": [
41 | [
42 | [
43 | 20480,
44 | -20480
45 | ],
46 | [
47 | -20480,
48 | -20480
49 | ],
50 | [
51 | -20480,
52 | 20480
53 | ],
54 | [
55 | -10240,
56 | 10240
57 | ],
58 | [
59 | 0,
60 | 0
61 | ]
62 | ],
63 | [
64 | [
65 | 20480,
66 | 20480
67 | ],
68 | [
69 | 20480,
70 | -20480
71 | ],
72 | [
73 | 0,
74 | 0
75 | ],
76 | [
77 | 10240,
78 | 10240
79 | ]
80 | ],
81 | [
82 | [
83 | -10240,
84 | 10240
85 | ],
86 | [
87 | -20480,
88 | 20480
89 | ],
90 | [
91 | 0,
92 | 20480
93 | ]
94 | ],
95 | [
96 | [
97 | 0,
98 | 0
99 | ],
100 | [
101 | -10240,
102 | 10240
103 | ],
104 | [
105 | 0,
106 | 10240
107 | ]
108 | ],
109 | [
110 | [
111 | 20480,
112 | 20480
113 | ],
114 | [
115 | 10240,
116 | 10240
117 | ],
118 | [
119 | 0,
120 | 10240
121 | ],
122 | [
123 | 0,
124 | 20480
125 | ]
126 | ]
127 | ],
128 | "points": [
129 | [
130 | -20480,
131 | -20480
132 | ],
133 | [
134 | -20480,
135 | 20480
136 | ],
137 | [
138 | 0,
139 | 20480
140 | ],
141 | [
142 | -10240,
143 | 10240
144 | ],
145 | [
146 | 0,
147 | 10240
148 | ],
149 | [
150 | 0,
151 | 0
152 | ],
153 | [
154 | 10240,
155 | 10240
156 | ],
157 | [
158 | 0,
159 | 10240
160 | ],
161 | [
162 | 0,
163 | 20480
164 | ],
165 | [
166 | 20480,
167 | 20480
168 | ],
169 | [
170 | 20480,
171 | -20480
172 | ]
173 | ],
174 | "indices": [
175 | 1,
176 | 3,
177 | 0,
178 | 3,
179 | 5,
180 | 0,
181 | 5,
182 | 6,
183 | 10,
184 | 5,
185 | 10,
186 | 0,
187 | 6,
188 | 9,
189 | 10,
190 | 1,
191 | 2,
192 | 3,
193 | 3,
194 | 4,
195 | 5,
196 | 7,
197 | 8,
198 | 6,
199 | 8,
200 | 9,
201 | 6
202 | ]
203 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_62.json:
--------------------------------------------------------------------------------
1 | {
2 | "polygons": [
3 | [
4 | [
5 | 5120,
6 | -5120
7 | ],
8 | [
9 | 0,
10 | -10240
11 | ],
12 | [
13 | -20480,
14 | -20480
15 | ],
16 | [
17 | 0,
18 | 0
19 | ]
20 | ],
21 | [
22 | [
23 | 0,
24 | 0
25 | ],
26 | [
27 | -20480,
28 | -20480
29 | ],
30 | [
31 | 0,
32 | 20480
33 | ]
34 | ],
35 | [
36 | [
37 | 10240,
38 | 0
39 | ],
40 | [
41 | 0,
42 | 0
43 | ],
44 | [
45 | 0,
46 | 20480
47 | ]
48 | ],
49 | [
50 | [
51 | -20480,
52 | -20480
53 | ],
54 | [
55 | 0,
56 | -10240
57 | ],
58 | [
59 | 10240,
60 | -10240
61 | ],
62 | [
63 | 20480,
64 | -20480
65 | ]
66 | ],
67 | [
68 | [
69 | 5120,
70 | -5120
71 | ],
72 | [
73 | 10240,
74 | 0
75 | ],
76 | [
77 | 20480,
78 | -20480
79 | ],
80 | [
81 | 10240,
82 | -10240
83 | ]
84 | ]
85 | ],
86 | "indices": [
87 | 5,
88 | 0,
89 | 3,
90 | 0,
91 | 1,
92 | 3,
93 | 3,
94 | 1,
95 | 2,
96 | 5,
97 | 6,
98 | 9,
99 | 5,
100 | 9,
101 | 0,
102 | 6,
103 | 8,
104 | 9,
105 | 5,
106 | 3,
107 | 4,
108 | 7,
109 | 8,
110 | 6
111 | ],
112 | "shape": [
113 | [
114 | [
115 | 0,
116 | 20480
117 | ],
118 | [
119 | 20480,
120 | -20480
121 | ],
122 | [
123 | -20480,
124 | -20480
125 | ]
126 | ],
127 | [
128 | [
129 | 0,
130 | 0
131 | ],
132 | [
133 | 10240,
134 | 0
135 | ],
136 | [
137 | 0,
138 | -10240
139 | ],
140 | [
141 | 10240,
142 | -10240
143 | ]
144 | ]
145 | ],
146 | "points": [
147 | [
148 | -20480,
149 | -20480
150 | ],
151 | [
152 | 0,
153 | 20480
154 | ],
155 | [
156 | 10240,
157 | 0
158 | ],
159 | [
160 | 0,
161 | 0
162 | ],
163 | [
164 | 5120,
165 | -5120
166 | ],
167 | [
168 | 0,
169 | -10240
170 | ],
171 | [
172 | 10240,
173 | -10240
174 | ],
175 | [
176 | 5120,
177 | -5120
178 | ],
179 | [
180 | 10240,
181 | 0
182 | ],
183 | [
184 | 20480,
185 | -20480
186 | ]
187 | ]
188 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_63.json:
--------------------------------------------------------------------------------
1 | {
2 | "points": [
3 | [
4 | -14336,
5 | -15360
6 | ],
7 | [
8 | 0,
9 | 20480
10 | ],
11 | [
12 | 9216,
13 | 1024
14 | ],
15 | [
16 | -4096,
17 | -5120
18 | ],
19 | [
20 | 3629,
21 | -8553
22 | ],
23 | [
24 | 2048,
25 | -11264
26 | ],
27 | [
28 | 5120,
29 | -9216
30 | ],
31 | [
32 | 3629,
33 | -8553
34 | ],
35 | [
36 | 9216,
37 | 1024
38 | ],
39 | [
40 | 14336,
41 | -15360
42 | ]
43 | ],
44 | "indices": [
45 | 0,
46 | 1,
47 | 3,
48 | 3,
49 | 1,
50 | 2,
51 | 3,
52 | 5,
53 | 0,
54 | 0,
55 | 5,
56 | 9,
57 | 5,
58 | 6,
59 | 9,
60 | 6,
61 | 8,
62 | 9,
63 | 3,
64 | 4,
65 | 5,
66 | 7,
67 | 8,
68 | 6
69 | ],
70 | "shape": [
71 | [
72 | [
73 | 0,
74 | 20480
75 | ],
76 | [
77 | 9216,
78 | 1024
79 | ],
80 | [
81 | 14336,
82 | -15360
83 | ],
84 | [
85 | -14336,
86 | -15360
87 | ]
88 | ],
89 | [
90 | [
91 | -4096,
92 | -5120
93 | ],
94 | [
95 | 9216,
96 | 1024
97 | ],
98 | [
99 | 2048,
100 | -11264
101 | ],
102 | [
103 | 5120,
104 | -9216
105 | ]
106 | ]
107 | ],
108 | "polygons": [
109 | [
110 | [
111 | -4096,
112 | -5120
113 | ],
114 | [
115 | -14336,
116 | -15360
117 | ],
118 | [
119 | 0,
120 | 20480
121 | ]
122 | ],
123 | [
124 | [
125 | 9216,
126 | 1024
127 | ],
128 | [
129 | -4096,
130 | -5120
131 | ],
132 | [
133 | 0,
134 | 20480
135 | ]
136 | ],
137 | [
138 | [
139 | 3629,
140 | -8553
141 | ],
142 | [
143 | 2048,
144 | -11264
145 | ],
146 | [
147 | -14336,
148 | -15360
149 | ],
150 | [
151 | -4096,
152 | -5120
153 | ]
154 | ],
155 | [
156 | [
157 | 14336,
158 | -15360
159 | ],
160 | [
161 | -14336,
162 | -15360
163 | ],
164 | [
165 | 2048,
166 | -11264
167 | ]
168 | ],
169 | [
170 | [
171 | 14336,
172 | -15360
173 | ],
174 | [
175 | 2048,
176 | -11264
177 | ],
178 | [
179 | 5120,
180 | -9216
181 | ]
182 | ],
183 | [
184 | [
185 | 14336,
186 | -15360
187 | ],
188 | [
189 | 5120,
190 | -9216
191 | ],
192 | [
193 | 9216,
194 | 1024
195 | ]
196 | ],
197 | [
198 | [
199 | 5120,
200 | -9216
201 | ],
202 | [
203 | 3629,
204 | -8553
205 | ],
206 | [
207 | 9216,
208 | 1024
209 | ]
210 | ]
211 | ]
212 | }
213 |
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_64.json:
--------------------------------------------------------------------------------
1 | {
2 | "shape": [
3 | [
4 | [
5 | 0,
6 | 20480
7 | ],
8 | [
9 | 9216,
10 | 1024
11 | ],
12 | [
13 | 26624,
14 | -7168
15 | ],
16 | [
17 | 14336,
18 | -15360
19 | ],
20 | [
21 | -14336,
22 | -15360
23 | ],
24 | [
25 | -25600,
26 | -7168
27 | ]
28 | ],
29 | [
30 | [
31 | -4096,
32 | -5120
33 | ],
34 | [
35 | 9216,
36 | 1024
37 | ],
38 | [
39 | 2048,
40 | -11264
41 | ]
42 | ]
43 | ],
44 | "polygons": [
45 | [
46 | [
47 | 2048,
48 | -11264
49 | ],
50 | [
51 | -14336,
52 | -15360
53 | ],
54 | [
55 | -25600,
56 | -7168
57 | ],
58 | [
59 | -4096,
60 | -5120
61 | ]
62 | ],
63 | [
64 | [
65 | 9216,
66 | 1024
67 | ],
68 | [
69 | -4096,
70 | -5120
71 | ],
72 | [
73 | -25600,
74 | -7168
75 | ],
76 | [
77 | 0,
78 | 20480
79 | ]
80 | ],
81 | [
82 | [
83 | 14336,
84 | -15360
85 | ],
86 | [
87 | -14336,
88 | -15360
89 | ],
90 | [
91 | 2048,
92 | -11264
93 | ]
94 | ],
95 | [
96 | [
97 | 26624,
98 | -7168
99 | ],
100 | [
101 | 14336,
102 | -15360
103 | ],
104 | [
105 | 2048,
106 | -11264
107 | ],
108 | [
109 | 9216,
110 | 1024
111 | ]
112 | ]
113 | ],
114 | "indices": [
115 | 8,
116 | 0,
117 | 3,
118 | 0,
119 | 1,
120 | 3,
121 | 3,
122 | 1,
123 | 2,
124 | 3,
125 | 4,
126 | 8,
127 | 8,
128 | 4,
129 | 7,
130 | 4,
131 | 5,
132 | 7,
133 | 5,
134 | 6,
135 | 7
136 | ],
137 | "points": [
138 | [
139 | 0,
140 | 20480
141 | ],
142 | [
143 | 9216,
144 | 1024
145 | ],
146 | [
147 | -4096,
148 | -5120
149 | ],
150 | [
151 | 2048,
152 | -11264
153 | ],
154 | [
155 | 9216,
156 | 1024
157 | ],
158 | [
159 | 26624,
160 | -7168
161 | ],
162 | [
163 | 14336,
164 | -15360
165 | ],
166 | [
167 | -14336,
168 | -15360
169 | ],
170 | [
171 | -25600,
172 | -7168
173 | ]
174 | ]
175 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_65.json:
--------------------------------------------------------------------------------
1 | {
2 | "indices": [
3 | 0,
4 | 1,
5 | 2,
6 | 0,
7 | 2,
8 | 7,
9 | 3,
10 | 5,
11 | 6,
12 | 7,
13 | 2,
14 | 6,
15 | 3,
16 | 6,
17 | 2,
18 | 4,
19 | 5,
20 | 3,
21 | 8,
22 | 9,
23 | 10,
24 | 11,
25 | 12,
26 | 13,
27 | 14,
28 | 15,
29 | 16
30 | ],
31 | "polygons": [
32 | [
33 | [
34 | -14336,
35 | -15360
36 | ],
37 | [
38 | -18432,
39 | 0
40 | ],
41 | [
42 | -7617,
43 | 5899
44 | ],
45 | [
46 | -2048,
47 | -9216
48 | ]
49 | ],
50 | [
51 | [
52 | -2048,
53 | -9216
54 | ],
55 | [
56 | -2048,
57 | -2048
58 | ],
59 | [
60 | 0,
61 | 20480
62 | ],
63 | [
64 | 14336,
65 | -15360
66 | ]
67 | ],
68 | [
69 | [
70 | 14336,
71 | -15360
72 | ],
73 | [
74 | -14336,
75 | -15360
76 | ],
77 | [
78 | -2048,
79 | -9216
80 | ]
81 | ],
82 | [
83 | [
84 | -2048,
85 | -2048
86 | ],
87 | [
88 | -8935,
89 | 9758
90 | ],
91 | [
92 | 0,
93 | 20480
94 | ]
95 | ],
96 | [
97 | [
98 | -7882,
99 | 6620
100 | ],
101 | [
102 | -10240,
103 | 8192
104 | ],
105 | [
106 | -9007,
107 | 9672
108 | ]
109 | ],
110 | [
111 | [
112 | -9007,
113 | 9672
114 | ],
115 | [
116 | -9216,
117 | 10240
118 | ],
119 | [
120 | -8935,
121 | 9758
122 | ]
123 | ],
124 | [
125 | [
126 | -7617,
127 | 5899
128 | ],
129 | [
130 | -7882,
131 | 6620
132 | ],
133 | [
134 | -7168,
135 | 6144
136 | ]
137 | ]
138 | ],
139 | "points": [
140 | [-14336, -15360], [-2048, -2048], [-9216, 10240], [0, 20480], [-10240, 8192], [-8935, 9758], [-7617, 5899], [-18432, 0], [-7882, 6620], [14336, -15360], [-2048, -9216], [-9007, 9672], [-7168, 6144]
141 | ],
142 | "shape": [
143 | [
144 | [
145 | 0,
146 | 20480
147 | ],
148 | [
149 | 14336,
150 | -15360
151 | ],
152 | [
153 | -14336,
154 | -15360
155 | ],
156 | [
157 | -18432,
158 | 0
159 | ],
160 | [
161 | -7168,
162 | 6144
163 | ],
164 | [
165 | -10240,
166 | 8192
167 | ]
168 | ],
169 | [
170 | [
171 | -2048,
172 | -2048
173 | ],
174 | [
175 | -9216,
176 | 10240
177 | ],
178 | [
179 | -2048,
180 | -9216
181 | ]
182 | ]
183 | ]
184 | }
185 |
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_7.json:
--------------------------------------------------------------------------------
1 | {
2 | "polygons": [
3 | [
4 | [
5 | 0,
6 | 0
7 | ],
8 | [
9 | -10,
10 | 0
11 | ],
12 | [
13 | 10,
14 | 10
15 | ]
16 | ],
17 | [
18 | [
19 | 10,
20 | -10
21 | ],
22 | [
23 | -10,
24 | 0
25 | ],
26 | [
27 | 0,
28 | 0
29 | ]
30 | ]
31 | ],
32 | "shape": [
33 | [
34 | [
35 | -10,
36 | 0
37 | ],
38 | [
39 | 10,
40 | 10
41 | ],
42 | [
43 | 0,
44 | 0
45 | ],
46 | [
47 | 10,
48 | -10
49 | ]
50 | ]
51 | ],
52 | "points": [
53 | [
54 | 10,
55 | 10
56 | ],
57 | [
58 | 0,
59 | 0
60 | ],
61 | [
62 | 10,
63 | -10
64 | ],
65 | [
66 | -10,
67 | 0
68 | ]
69 | ],
70 | "indices": [
71 | 0,
72 | 1,
73 | 2,
74 | 0,
75 | 2,
76 | 3
77 | ]
78 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_70.json:
--------------------------------------------------------------------------------
1 | {
2 | "points": [
3 | [
4 | -5120,
5 | -10240
6 | ],
7 | [
8 | -5120,
9 | -5120
10 | ],
11 | [
12 | 0,
13 | 0
14 | ],
15 | [
16 | 5120,
17 | -5120
18 | ],
19 | [
20 | 5120,
21 | -10240
22 | ],
23 | [
24 | -5120,
25 | 5120
26 | ],
27 | [
28 | -5120,
29 | 10240
30 | ],
31 | [
32 | 5120,
33 | 10240
34 | ],
35 | [
36 | 5120,
37 | 5120
38 | ],
39 | [
40 | 0,
41 | 0
42 | ]
43 | ],
44 | "shape": [
45 | [
46 | [
47 | 0,
48 | 0
49 | ],
50 | [
51 | -5120,
52 | 5120
53 | ],
54 | [
55 | -5120,
56 | 10240
57 | ],
58 | [
59 | 5120,
60 | 10240
61 | ],
62 | [
63 | 5120,
64 | 5120
65 | ],
66 | [
67 | 0,
68 | 0
69 | ],
70 | [
71 | 5120,
72 | -5120
73 | ],
74 | [
75 | 5120,
76 | -10240
77 | ],
78 | [
79 | -5120,
80 | -10240
81 | ],
82 | [
83 | -5120,
84 | -5120
85 | ]
86 | ]
87 | ],
88 | "polygons": [
89 | [
90 | [
91 | -5120,
92 | -10240
93 | ],
94 | [
95 | -5120,
96 | -5120
97 | ],
98 | [
99 | 0,
100 | 0
101 | ],
102 | [
103 | 5120,
104 | -5120
105 | ],
106 | [
107 | 5120,
108 | -10240
109 | ]
110 | ],
111 | [
112 | [
113 | 5120,
114 | 10240
115 | ],
116 | [
117 | 5120,
118 | 5120
119 | ],
120 | [
121 | 0,
122 | 0
123 | ],
124 | [
125 | -5120,
126 | 5120
127 | ],
128 | [
129 | -5120,
130 | 10240
131 | ]
132 | ]
133 | ],
134 | "indices": [
135 | 3,
136 | 1,
137 | 2,
138 | 1,
139 | 4,
140 | 0,
141 | 3,
142 | 4,
143 | 1,
144 | 5,
145 | 6,
146 | 8,
147 | 5,
148 | 8,
149 | 9,
150 | 6,
151 | 7,
152 | 8
153 | ]
154 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_71.json:
--------------------------------------------------------------------------------
1 | {
2 | "points" : [
3 | [
4 | 0,
5 | 0
6 | ],
7 | [
8 | 0,
9 | 250
10 | ],
11 | [
12 | 250,
13 | 250
14 | ],
15 | [
16 | 250,
17 | 200
18 | ],
19 | [
20 | 400,
21 | 200
22 | ],
23 | [
24 | 100,
25 | 100
26 | ],
27 | [
28 | 400,
29 | 100
30 | ],
31 | [
32 | 200,
33 | 50
34 | ],
35 | [
36 | 400,
37 | 0
38 | ],
39 | [
40 | 50,
41 | 200
42 | ],
43 | [
44 | 50,
45 | 100
46 | ],
47 | [
48 | 150,
49 | 200
50 | ]
51 | ],
52 | "indices" : [
53 | 0,
54 | 1,
55 | 10,
56 | 10,
57 | 1,
58 | 9,
59 | 9,
60 | 1,
61 | 11,
62 | 11,
63 | 1,
64 | 2,
65 | 11,
66 | 2,
67 | 3,
68 | 10,
69 | 5,
70 | 0,
71 | 5,
72 | 7,
73 | 0,
74 | 0,
75 | 7,
76 | 8,
77 | 10,
78 | 11,
79 | 5,
80 | 11,
81 | 3,
82 | 5,
83 | 5,
84 | 3,
85 | 4,
86 | 5,
87 | 6,
88 | 7
89 | ],
90 | "polygons" : [
91 | [
92 | [
93 | 50,
94 | 200
95 | ],
96 | [
97 | 50,
98 | 100
99 | ],
100 | [
101 | 0,
102 | 0
103 | ],
104 | [
105 | 0,
106 | 250
107 | ]
108 | ],
109 | [
110 | [
111 | 250,
112 | 200
113 | ],
114 | [
115 | 150,
116 | 200
117 | ],
118 | [
119 | 50,
120 | 200
121 | ],
122 | [
123 | 0,
124 | 250
125 | ],
126 | [
127 | 250,
128 | 250
129 | ]
130 | ],
131 | [
132 | [
133 | 400,
134 | 100
135 | ],
136 | [
137 | 200,
138 | 50
139 | ],
140 | [
141 | 0,
142 | 0
143 | ],
144 | [
145 | 50,
146 | 100
147 | ],
148 | [
149 | 100,
150 | 100
151 | ]
152 | ],
153 | [
154 | [
155 | 400,
156 | 0
157 | ],
158 | [
159 | 0,
160 | 0
161 | ],
162 | [
163 | 200,
164 | 50
165 | ]
166 | ],
167 | [
168 | [
169 | 400,
170 | 200
171 | ],
172 | [
173 | 100,
174 | 100
175 | ],
176 | [
177 | 50,
178 | 100
179 | ],
180 | [
181 | 150,
182 | 200
183 | ],
184 | [
185 | 250,
186 | 200
187 | ]
188 | ]
189 | ],
190 | "shape" : [
191 | [
192 | [
193 | 0,
194 | 0
195 | ],
196 | [
197 | 0,
198 | 250
199 | ],
200 | [
201 | 250,
202 | 250
203 | ],
204 | [
205 | 250,
206 | 200
207 | ],
208 | [
209 | 400,
210 | 200
211 | ],
212 | [
213 | 100,
214 | 100
215 | ],
216 | [
217 | 400,
218 | 100
219 | ],
220 | [
221 | 200,
222 | 50
223 | ],
224 | [
225 | 400,
226 | 0
227 | ]
228 | ],
229 | [
230 | [
231 | 150,
232 | 200
233 | ],
234 | [
235 | 50,
236 | 200
237 | ],
238 | [
239 | 50,
240 | 100
241 | ]
242 | ]
243 | ]
244 | }
245 |
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_72.json:
--------------------------------------------------------------------------------
1 | {
2 | "shape" : [
3 | [
4 | [
5 | 0,
6 | 0
7 | ],
8 | [
9 | 150,
10 | 150
11 | ],
12 | [
13 | 100,
14 | 200
15 | ],
16 | [
17 | 200,
18 | 200
19 | ],
20 | [
21 | 200,
22 | 150
23 | ],
24 | [
25 | 300,
26 | 150
27 | ],
28 | [
29 | 150,
30 | 100
31 | ],
32 | [
33 | 300,
34 | 100
35 | ],
36 | [
37 | 200,
38 | 50
39 | ],
40 | [
41 | 300,
42 | 0
43 | ]
44 | ]
45 | ],
46 | "points" : [
47 | [
48 | 0,
49 | 0
50 | ],
51 | [
52 | 150,
53 | 150
54 | ],
55 | [
56 | 100,
57 | 200
58 | ],
59 | [
60 | 200,
61 | 200
62 | ],
63 | [
64 | 200,
65 | 150
66 | ],
67 | [
68 | 300,
69 | 150
70 | ],
71 | [
72 | 150,
73 | 100
74 | ],
75 | [
76 | 300,
77 | 100
78 | ],
79 | [
80 | 200,
81 | 50
82 | ],
83 | [
84 | 300,
85 | 0
86 | ]
87 | ],
88 | "polygons" : [
89 | [
90 | [
91 | 200,
92 | 200
93 | ],
94 | [
95 | 200,
96 | 150
97 | ],
98 | [
99 | 150,
100 | 100
101 | ],
102 | [
103 | 0,
104 | 0
105 | ],
106 | [
107 | 150,
108 | 150
109 | ]
110 | ],
111 | [
112 | [
113 | 300,
114 | 150
115 | ],
116 | [
117 | 150,
118 | 100
119 | ],
120 | [
121 | 200,
122 | 150
123 | ]
124 | ],
125 | [
126 | [
127 | 200,
128 | 200
129 | ],
130 | [
131 | 150,
132 | 150
133 | ],
134 | [
135 | 100,
136 | 200
137 | ]
138 | ],
139 | [
140 | [
141 | 300,
142 | 100
143 | ],
144 | [
145 | 200,
146 | 50
147 | ],
148 | [
149 | 0,
150 | 0
151 | ],
152 | [
153 | 150,
154 | 100
155 | ]
156 | ],
157 | [
158 | [
159 | 300,
160 | 0
161 | ],
162 | [
163 | 0,
164 | 0
165 | ],
166 | [
167 | 200,
168 | 50
169 | ]
170 | ]
171 | ],
172 | "indices" : [
173 | 0,
174 | 1,
175 | 6,
176 | 1,
177 | 4,
178 | 6,
179 | 6,
180 | 4,
181 | 5,
182 | 1,
183 | 2,
184 | 3,
185 | 1,
186 | 3,
187 | 4,
188 | 6,
189 | 8,
190 | 0,
191 | 0,
192 | 8,
193 | 9,
194 | 6,
195 | 7,
196 | 8
197 | ]
198 | }
199 |
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_8.json:
--------------------------------------------------------------------------------
1 | {
2 | "polygons": [
3 | [
4 | [
5 | 0,
6 | 10
7 | ],
8 | [
9 | 0,
10 | -10
11 | ],
12 | [
13 | -5,
14 | -20
15 | ],
16 | [
17 | -20,
18 | -20
19 | ],
20 | [
21 | -10,
22 | 0
23 | ]
24 | ],
25 | [
26 | [
27 | 0,
28 | 10
29 | ],
30 | [
31 | -10,
32 | 0
33 | ],
34 | [
35 | -20,
36 | 20
37 | ],
38 | [
39 | -5,
40 | 20
41 | ]
42 | ],
43 | [
44 | [
45 | 20,
46 | -20
47 | ],
48 | [
49 | 5,
50 | -20
51 | ],
52 | [
53 | 0,
54 | -10
55 | ],
56 | [
57 | 0,
58 | 10
59 | ],
60 | [
61 | 10,
62 | 0
63 | ]
64 | ],
65 | [
66 | [
67 | 20,
68 | 20
69 | ],
70 | [
71 | 10,
72 | 0
73 | ],
74 | [
75 | 0,
76 | 10
77 | ],
78 | [
79 | 5,
80 | 20
81 | ]
82 | ]
83 | ],
84 | "points": [
85 | [
86 | -20,
87 | -20
88 | ],
89 | [
90 | -10,
91 | 0
92 | ],
93 | [
94 | -20,
95 | 20
96 | ],
97 | [
98 | -5,
99 | 20
100 | ],
101 | [
102 | 0,
103 | 10
104 | ],
105 | [
106 | 5,
107 | 20
108 | ],
109 | [
110 | 20,
111 | 20
112 | ],
113 | [
114 | 10,
115 | 0
116 | ],
117 | [
118 | 20,
119 | -20
120 | ],
121 | [
122 | 5,
123 | -20
124 | ],
125 | [
126 | 0,
127 | -10
128 | ],
129 | [
130 | -5,
131 | -20
132 | ]
133 | ],
134 | "shape": [
135 | [
136 | [
137 | -10,
138 | 0
139 | ],
140 | [
141 | -20,
142 | 20
143 | ],
144 | [
145 | -5,
146 | 20
147 | ],
148 | [
149 | 0,
150 | 10
151 | ],
152 | [
153 | 5,
154 | 20
155 | ],
156 | [
157 | 20,
158 | 20
159 | ],
160 | [
161 | 10,
162 | 0
163 | ],
164 | [
165 | 20,
166 | -20
167 | ],
168 | [
169 | 5,
170 | -20
171 | ],
172 | [
173 | 0,
174 | -10
175 | ],
176 | [
177 | -5,
178 | -20
179 | ],
180 | [
181 | -20,
182 | -20
183 | ]
184 | ]
185 | ],
186 | "indices": [
187 | 0,
188 | 1,
189 | 11,
190 | 2,
191 | 3,
192 | 1,
193 | 4,
194 | 1,
195 | 3,
196 | 1,
197 | 10,
198 | 11,
199 | 4,
200 | 10,
201 | 1,
202 | 10,
203 | 4,
204 | 7,
205 | 4,
206 | 5,
207 | 7,
208 | 10,
209 | 7,
210 | 9,
211 | 5,
212 | 6,
213 | 7,
214 | 9,
215 | 7,
216 | 8
217 | ]
218 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/Triangulation/triangle_test_9.json:
--------------------------------------------------------------------------------
1 | {
2 | "shape": [
3 | [
4 | [
5 | 0,
6 | -5
7 | ],
8 | [
9 | 0,
10 | 0
11 | ],
12 | [
13 | 10,
14 | -10
15 | ],
16 | [
17 | -10,
18 | -10
19 | ]
20 | ]
21 | ],
22 | "points": [
23 | [
24 | -10,
25 | -10
26 | ],
27 | [
28 | 0,
29 | -5
30 | ],
31 | [
32 | 0,
33 | 0
34 | ],
35 | [
36 | 10,
37 | -10
38 | ]
39 | ],
40 | "polygons": [
41 | [
42 | [
43 | 10,
44 | -10
45 | ],
46 | [
47 | -10,
48 | -10
49 | ],
50 | [
51 | 0,
52 | -5
53 | ]
54 | ],
55 | [
56 | [
57 | 10,
58 | -10
59 | ],
60 | [
61 | 0,
62 | -5
63 | ],
64 | [
65 | 0,
66 | 0
67 | ]
68 | ]
69 | ],
70 | "indices": [
71 | 0,
72 | 1,
73 | 3,
74 | 1,
75 | 2,
76 | 3
77 | ]
78 | }
--------------------------------------------------------------------------------
/Tests/iTriangleTests/TriangulationTestBank.swift:
--------------------------------------------------------------------------------
1 | import iShape
2 | import iFixFloat
3 | import Foundation
4 | import simd
5 | @testable import iTriangle
6 |
7 | struct TriangulationTest: Codable {
8 | let shape: Shape
9 | let points: Path
10 | let indices: [Int]
11 | let polygons: [Path]
12 |
13 | enum CodingKeys: String, CodingKey {
14 | case shape
15 | case points
16 | case indices
17 | case polygons
18 | }
19 | }
20 |
21 |
22 | struct TriangulationTestBank {
23 |
24 | static func load(index: Int) -> TriangulationTest {
25 | let bundle = Bundle.module
26 |
27 | if let fileURL = bundle.url(forResource: "triangle_test_\(index)", withExtension: "json") {
28 | do {
29 | let data = try Data(contentsOf: fileURL)
30 |
31 | let decoder = JSONDecoder()
32 | let decodedData = try decoder.decode(TriangulationTest.self, from: data)
33 |
34 | return decodedData
35 | } catch {
36 | print("Error loading resource: \(error)")
37 | }
38 | }
39 |
40 | fatalError("Error loading test file: \(index)")
41 | }
42 | }
43 |
44 | extension TriangulationTest {
45 | func printTest() {
46 | let encoder = JSONEncoder()
47 | encoder.outputFormatting = .prettyPrinted
48 | do {
49 | let data = try encoder.encode(self)
50 | if let json = String(data: data, encoding: .utf8) {
51 | print(json)
52 | }
53 | } catch {
54 | print("Error converting to JSON: \(error)")
55 | }
56 | }
57 | }
58 |
--------------------------------------------------------------------------------