Integer and decimal polygon Boolean, PolyTree, offset, stroke, simplification and Minkowski Sum for MoonBit
moon add BigSaltyMan/moonclip@0.4.0| 任务 | 整数/小数入口 | 结果 |
|---|---|---|
| 开放路线保留区域内 | intersect_polylines/intersect_polylines_d | 内部及最终边界上的有序开放片段 |
| 开放路线区域擦除 | difference_polylines/difference_polylines_d | 外部及孔洞中的有序片段,剔除正长度边界重合区间 |
| 闭合中心线描边 | stroke_closed_polyline/stroke_closed_polyline_d | 平铺覆盖区域,可以有孔洞 |
| 闭合描边层级 | stroke_closed_tree/stroke_closed_tree_d | 同次清理生成的孔洞树,可单点/批量查询 |
| 能力 | 整数 | 小数 | 输出 | 使用说明 |
|---|---|---|---|---|
| 开放折线窗口裁剪 | 支持 | 支持 | 有序开放片段 | 窗口裁剪 |
| 闭合区域窗口裁剪 | 支持 | 支持 | 平铺/孔洞树 | 窗口裁剪 |
| 多路线批量描边 | 支持 | 支持 | 平铺/孔洞树 | 组合流程 |
| Minkowski Sum | 支持 | 支持 | 平铺/孔洞树 | 图案扫掠 |
| 树单点/批量定位 | 支持 | 支持 | 定位状态与命中节点 | 树点定位 |
git clone https://github.com/BigSaltyMan/moonclip.git
cd moonclip
moon run --target native cmd/examplecd demo
npm run devbash scripts/check.sh --scope docspub(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
}fn PolyTree64::locate(self : PolyTree64, point : Point64, limits? : Limits) -> Result[TreePointLocation64, ClipError]fn PolyTree64::locate_many(self : PolyTree64, points : Array[Point64], limits? : Limits) -> Result[Array[TreePointLocation64], ClipError]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
PolyTreeQuery
OffsetParameters
OffsetGenerate
OffsetCleanup
StrokeParameters
StrokeGenerate
StrokeCleanup
DecimalParameters
DecimalQuantize
DecimalOutput
SimplifyParameters
SimplifyEvaluate
SimplifyReport
SimplifyOutput
MinkowskiParameters
MinkowskiGenerate
MinkowskiCleanup
RectClipParameters
RectClipEvaluate
RectClipOutput
LineClipParameters
LineClipEvaluate
LineClipOutput
} derive(Eq, Debug)pub(all) enum TreePointLocation64 {
Outside
Inside(PolyNode64)
InHole(PolyNode64)
OnBoundary(Array[PolyNode64])
}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_closed_tree(path : Array[Point64], width : Double, options? : OffsetOptions, limits? : Limits) -> Result[PolyTree64, ClipError]fn stroke_polylines_tree(paths : Array[Array[Point64]], width : Double, cap? : CapType, options? : OffsetOptions, limits? : Limits) -> Result[PolyTree64, 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