Integer and decimal polygon Boolean, PolyTree, offset, stroke, simplification and Minkowski Sum for MoonBit
moon add BigSaltyMan/moonclip@0.2.1| 用途 | 公开入口 | 成功结果 |
|---|---|---|
| 区域布尔 | boolean_op / boolean_op_d | 整数 / 小数平铺轮廓 |
| 孔洞层级 | boolean_tree | 整数 PolyTree64 |
| 闭合区域偏移 | offset_polygons / offset_polygons_d | 整数 / 小数平铺轮廓 |
| 开放路线加宽 | stroke_polyline / stroke_polyline_d | 整数 / 小数多边形区域 |
| 显式简化 | simplify_paths / simplify_paths_d | 轮廓、删点数及三类退化索引 |
| 单图案扫掠 | minkowski_sum | 整数平铺轮廓 |
git clone https://github.com/BigSaltyMan/moonclip.git
cd moonclip
moon run --target native cmd/exampleDecimal tree: outer/hole/island OK
Simplify vertices: 9 -> 8; input_degenerate=[2]; degenerate=[2]; collapsed=[]; offset/tree OK
Minkowski: rectangle/polyline, offcenter/diagonal and closed route/hole OK
MoonClip geometry, Boolean, PolyTree, offset, stroke, composition, decimal, simplify and Minkowski OKimport {
"BigSaltyMan/moonclip",
}
pkgtype(kind: "executable")cd demo
npm run devbash scripts/check.sh
bash scripts/bench.sh --target native --report _build/bench/report.jsonpub(all) enum ClipError {
InvalidInput(ErrorLocation, String)
CoordinateOutOfRange(ErrorLocation, Axis, Int64)
ExecutionFailure(ErrorLocation, String)
NumericFailure(ErrorLocation, String)
ResourceLimitExceeded(ErrorLocation, ResourceKind, Int)
QuantizationFailure(ErrorLocation, Axis?, ErrorLocation?, String)
DecimalCoordinateOutOfRange(ErrorLocation, Axis, Double, Int)
} derive(Eq, Debug)impl Default for OffsetOptionsfn OffsetOptions::new(join? : JoinType, miter_limit? : Double, arc_tolerance? : Double) -> OffsetOptionspub struct PolyNode64 {
// private fields
}pub struct PolyNodeD {
// private fields
}pub struct PolyTree64 {
// private fields
}pub struct PolyTreeD {
// private fields
}pub(all) enum Stage {
ValidateInputs
Cross
Orientation
Bounds
Area2
PointOnSegment
PointInPolygon
NormalizePath
NormalizePaths
EnginePrepare
ScanEvents
ActiveEdges
ScanBand
ScanTop
Intersections
HorizontalEvents
OutputTopology
BooleanOp
PolyTree
OffsetParameters
OffsetGenerate
OffsetCleanup
StrokeParameters
StrokeGenerate
StrokeCleanup
DecimalParameters
DecimalQuantize
DecimalOutput
SimplifyParameters
SimplifyEvaluate
SimplifyReport
SimplifyOutput
MinkowskiParameters
MinkowskiGenerate
MinkowskiCleanup
} derive(Eq, Debug)let COORDINATE_LIMIT : Int64fn offset_tree(paths : Array[Array[Point64]], delta : Double, fill_rule? : FillRule, options? : OffsetOptions, limits? : Limits) -> Result[PolyTree64, ClipError]fn simplify_paths(paths : Array[Array[Point64]], options? : SimplifyOptions, limits? : Limits) -> Result[SimplifyResult, ClipError]fn simplify_paths_d(paths : Array[Array[PointD]], precision? : Precision, options? : SimplifyOptions, limits? : Limits) -> Result[SimplifyResultD, ClipError]fn stroke_tree(path : Array[Point64], width : Double, cap? : CapType, options? : OffsetOptions, limits? : Limits) -> Result[PolyTree64, ClipError]Install
Download zipInteger and decimal polygon Boolean, PolyTree, offset, stroke, simplification and Minkowski Sum for MoonBit