剪贴板2吨
安格斯·约翰逊的脚本端口 克利珀斯2 用于多边形剪接和抵消的库
安装
npm install @countertype/clipper2-ts
使用量
import { Clipper, FillRule, JoinType, EndType } from '@countertype/clipper2-ts';
// Define polygons as arrays of points
const subject = [[
{ x: 0, y: 0 },
{ x: 100, y: 0 },
{ x: 100, y: 100 },
{ x: 0, y: 100 }
]];
const clip = [[
{ x: 50, y: 50 },
{ x: 150, y: 50 },
{ x: 150, y: 150 },
{ x: 50, y: 150 }
]];
// Boolean operations
const intersection = Clipper.intersect(subject, clip, FillRule.NonZero);
const union = Clipper.union(subject, clip, FillRule.NonZero);
const difference = Clipper.difference(subject, clip, FillRule.NonZero);
const xor = Clipper.xor(subject, clip, FillRule.NonZero);
// Polygon offsetting (inflate/deflate)
const offset = Clipper.inflatePaths(subject, 10, JoinType.Round, EndType.Polygon);
API 密码
这个端口遵循了Clipper2的C#执行的结构和功能,方法名称被改编为JavaScript公约. C# 使用时 PascalCase 方法(单位:千美元)AddPath, (中文(简体) ), Execute),该端口使用 camelCase (单位:千美元)addPath, (中文(简体) ), execute) (中文(简体) ). 类别名称保持不变
API 详细文件见 正式克利珀特文件
测试
该端口包括235个测试,以验证Clipper2的参考测试套件:
npm test # Run all 235 tests
npm test:coverage # Run with coverage report
测试结果:194/195多边形测试通过(99.5%),精确匹配C#参考执行. 单失败( 第16次试验, 弓形多边形) 也在 C# 中失败
许可证
快速软件许可证1.0(与Clipper2相同)
贷项
安格斯·约翰逊的原始图书馆. Jeremy Tribby 的脚本端口