├── .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 | ![Instruction Page 1](Readme/instruction_1.png) 102 |

103 | 104 |

105 | 106 | In Searchbar add https://github.com/iShape-Swift/iTriangle 107 | 108 | ![Instruction Page 2](Readme/instruction_2.png) 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 | --------------------------------------------------------------------------------