# @allmaps/triangulate 中文文档

规范地址：https://npmcn.com/package/%40allmaps/triangulate/

版本：1\.0\.0-beta\.34
npm 元数据更新时间：2026-10-01T09:24:38.891Z
中文译文更新时间：2026-11-05T23:55:51.072Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40allmaps/triangulate
原文对照：https://npmcn.com/package/%40allmaps/triangulate/?lang=original
项目主页：https://allmaps.org/
源码仓库：https://github.com/allmaps/allmaps

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：27 kB，11 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- 运行依赖：6 个
- 首次发布：2023-08-21T18:18:39.022Z
- 最新版本发布：2026-09-22T07:07:15.532Z
- 近 30 天下载量：8731（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：29（近 12 个月 5 个）

## 中文简介

Allmaps 三边形库

## 安装

```sh
npm install @allmaps/triangulate
```

也可以使用：`pnpm add @allmaps/triangulate`、`yarn add @allmaps/triangulate`、`bun add @allmaps/triangulate`

## README

# @ allmaps/ 三角形

这个包提供了三角化多边形的方法:即返回一组分割多边形的三角形.

三角形符合某些条件: `distance` 提供了参数,三角形不超过 `distance`,一般不包含非常尖锐的角度或非常钝钝的角度.

此软件包用于内部 [@ allmaps/ 放弃](https://npmcn.com/package/packages/render/) 将地理参考地图(使用GCP作为施泰纳点,使用可应用的面具作为施泰纳多边形)的全遮罩分解为一组三角形,可以使用WebGL来渲染.

## 如何运作

它使用现代 **受限的 Delaunay 三相算法** 多边形,使用 [断层](https://github.com/mapbox/delaunator) 财务报告和审定财务报表 [约束者](https://github.com/kninnug/Constrainautor)。 。 。 .

为了多了解一下它是如何运作的 看看这个 [可观察笔记本](https://observablehq.com/d/efde1d04f1a9bc17)。 。 。 .

简言之,三角形首先在多边形的边框内使用网格点来作成, 间距d `distance` 和由多边形边缘产生的分数(使用插值) `distance`),提供了施泰纳多边形的分和分. 从所有这些点来看,都进行了德劳奈三角测量。 这导致大多数网格细胞产生两个条件良好的三角. 后由相插多边形的边缘和相插斯泰纳多边形的边缘来制约三角.

## 安装

这是一个只在浏览器和Node.js中工作的无害环境管理模块.

用 pnpm 安装 :

```sh
pnpm install @allmaps/triangulate
```

## 使用量

这个软件包暴露出两个功能: `triangulate()` 简单地三角化多边形并返回三角形,以及 `triangulateToUnique()` 返回一组对象,这些对象使用它们之间独特的点和边来描述三角关系.

在最简单的情况下,可以使用如下:

```js
import { triangulate } from '@allmaps/triangulate'

// Note that polygons are in double brackets (an array of an outer ring, and possibly inner rings if there are holes) and their rings are not round-trip (the first coordinate is not repeated at the and)
const polygon = [
  [
    [0.592, 0.953],
    [0.304, 2.394],
    [2.904, 2.201],
    [2.394, 0.232]
  ]
]

const distance = 1

// Compute constrained triangulation of `polygon` using a grid of size `distance`
const triangles = triangulate(polygon, distance)

// triangles = [
//   [
//     [ 1.304, 1.232 ],
//     [ 1.4655588463411926, 0.6034795070965593 ],
//     [ 0.592, 0.953 ]
//   ],
//   ...
// ]
```

两种功能都可以通过以下选项:

-   `steinerPoints`:施泰纳点. 这些成为了在构建三角形时考虑的第三组点.
-   `steinerPolygons`:斯坦纳多边形. 它们是多边形,它们的分点需要作为施泰纳分来添加,其边缘(用距离插入)也需要被限制.
-   `minimumTriangleAngle`: 由此产生的三角形最小角(以弧度计). 利用这个选项,可能由内部函数产生的sliver多边形可以被去除. 默认 : `0.01`。 。 。 .
-   `computeInsideSteinerPolygons`:是否计算每个三角形,是否在施泰纳多边形内.

## 许可证

麻省理工学院

## API 密码

## 页:1

### 稳定

-   Constrainautor不允许自相交集多边形,并将为此类输入引起出错.

### 基准

对于一个10分多边形(有直径~200),这里有一些以给定距离计算三角的基准:

-   `triangulate(polygon, 1000)` (无网点):74544个操作/s计算出8个三角形
-   `triangulate(polygon, 100)`: 56849 计算出11个三角形
-   `triangulate(polygon, 10)`: 2163 计算出435个三角形
-   `triangulate(polygon, 1)`: 3个操作/s计算出38352个三角形

见 [`./bench/index.js`](https://npmcn.com/package/%40allmaps/triangulate/%60./bench/index.js%60)。 。 。 .

要运行基准,就运行 `npm run bench`。 。 。 .

## 常见问题

### @allmaps/triangulate 是什么？

Allmaps 三边形库

### 如何安装 @allmaps/triangulate？

在项目目录运行 npm install @allmaps/triangulate，或使用 pnpm add / yarn add / bun add。

### @allmaps/triangulate 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/allmaps\_\_triangulate 是否存在。

### @allmaps/triangulate 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @allmaps/triangulate 可以商用吗？

@allmaps/triangulate 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @allmaps/triangulate 的下载量有多少？

根据 npm 官方下载统计，@allmaps/triangulate 在 2026/10/06 – 2026/11/04 这 30 天内被下载 8,731 次，日均约 291 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @allmaps/triangulate 还在维护吗？

最新版本 1\.0\.0-beta\.34 发布于 2026/09/22（1 个月前）；至今共发布 29 个版本，其中过去 12 个月发布了 5 个；首次发布于 2023/08/22。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

