我正在尝试修改clipper.js库中的“简化多边形”函数。我不知道以下脚本有什么问题:
var five_pointed_star = [{
"X": 114.11152626295,
"Y": 22.213863709855
}, {
"X": 114.11262775355,
"Y": 22.214272283475
}, {
"X": 114.1133008867,
"Y": 22.214885143905
}, {
"X": 114.1133008867,
"Y": 22.21619257949
}, {
"X": 114.11164865079,
"Y": 22.216233436852
}, {
"X": 114.11152626295,
"Y": 22.213863709855
}];
var ten_pointed_star = ClipperLib.Clipper.SimplifyPolygon(five_pointed_star, ClipperLib.PolyFillType.pftNonZero);
console.log(ten_pointed_star);但是,如果我将five_pointed_star更改为以下内容,代码将按预期工作:
var five_pointed_star = [{
"X": 147,
"Y": 313
}, {
"X": 247,
"Y": 34
}, {
"X": 338,
"Y": 312
}, {
"X": 86,
"Y": 123
}, {
"X": 404,
"Y": 124
}];你知道我做错了什么吗?
发布于 2018-03-15 08:23:55
多边形使用路径作为参数,路径在文档中具有以下定义:
此结构包含定义单个等高线的IntPoint顶点序列(另见术语)。路径可以是开放的,表示一系列由两个或多个顶点所包围的线段,也可以是封闭的,表示多边形。路径是否打开取决于上下文。闭合路径可以是“外部”轮廓,也可以是“洞”轮廓。它们取决于方向。
IntPoint读到:
IntPoint结构用于表示剪刀库中的所有顶点。
所以这意味着你需要给它的数字,必须是整数,而你试图使用浮点数,或者是浮点数。因此,如果您使用整数,它应该总是工作良好,如果您的计算返回浮动,您可以使用四舍五入的方法,如地板(),以摆脱后的值点。
https://stackoverflow.com/questions/49293934
复制相似问题