iTriangle

一个快速且高效的库,用于进行 Delaunay 三角剖分和将复杂多边形转换为凸形,包括高级的自相交处理。

Delaunay 三角剖分

分解为凸多边形

特性

文档

基本用法

添加导入

import iTriangle

之后,将您的多边形表示为顶点数组。 这是一个奶酪多边形的例子

let shape = [
     // body
    [
        CGPoint(x:   0, y:  20),     // 0
        CGPoint(x:   8, y:  10),     // 1
        CGPoint(x:   7, y:   6),     // 2
        CGPoint(x:   9, y:   1),     // 3
        CGPoint(x:  13, y:  -1),     // 4
        CGPoint(x:  17, y:   1),     // 5
        CGPoint(x:  26, y:  -7),     // 6
        CGPoint(x:  14, y: -15),     // 7
        CGPoint(x:   0, y: -18),     // 8
        CGPoint(x: -14, y: -15),     // 9
        CGPoint(x: -25, y:  -7),     // 10
        CGPoint(x: -18, y:   0),     // 11
        CGPoint(x: -16, y:  -3),     // 12
        CGPoint(x: -13, y:  -4),     // 13
        CGPoint(x:  -8, y:  -2),     // 14
        CGPoint(x:  -6, y:   2),     // 15
        CGPoint(x:  -7, y:   6),     // 16
        CGPoint(x: -10, y:   8)      // 17
    ],
    // hole
    [
        CGPoint(x:   2, y:   0),    // 18
        CGPoint(x:  -2, y:  -2),    // 19
        CGPoint(x:  -4, y:  -5),    // 20
        CGPoint(x:  -2, y:  -9),    // 21
        CGPoint(x:   2, y: -11),    // 22
        CGPoint(x:   5, y:  -9),    // 23
        CGPoint(x:   7, y:  -5),    // 24
        CGPoint(x:   5, y:  -2)     // 25
    ]
]

let triangulation = shape.triangulate()

print("points: \(triangulation.points)")
print("indices: \(triangulation.indices)")

输出三角剖分: 三角形索引和顶点,其中所有三角形都按顺时针方向定向。

安装

包管理器

将以下内容添加到您的 Package.swift

let package = Package(
    name: "[your name]",
    products: [
        dependencies: [
            .package(url: "https://github.com/iShape-Swift/iTriangle", from: "1.11.0")
        ],
        targets: [
            .target(
                name: "[your target]",
                dependencies: ["iTriangle"])
        ]
    ]
)

或直接通过 .xcodeproj 添加

Instruction Page 1

在搜索栏中添加 https://github.com/iShape-Swift/iTriangle

Instruction Page 2