我想在用KineticJS创建的图像周围创建一个外壳。
1-我用x,y将图像的所有顶点保存在一个数组中
var points = [[0, 0], [0,350], [170, 0], [170, 300], [135, 135] , [135, 435], [305, 135], [305, 435]];
2-我想在这些点周围创建一个凸包
3-之后,我想将船体的距离设置得稍高一点,这样所有的物体都可以在船体中。
我在网上找到了一个用于创建凸包的javascript implementation,并尝试将其绑定到我的KineticJS脚本中。
但是我得到了一个错误:未捕获RangeError:在buildConvexHull函数中超过了最大调用堆栈大小:
allBaseLines.push(baseLine)
我的代码乱七八糟,但它不能工作...http://jsfiddle.net/gvFrd/5/
发布于 2015-05-08 15:09:31
Hull.js看起来就是你要找的答案。在制作凸面外壳之后,它还可以将边缘向内推,并生成更多的分段,以获得看起来相当精确的轮廓。
发布于 2014-03-01 22:24:57
一个简单的算法是将点集分成两个半集,然后找到最远的3个点并对这些点进行三角剖分。然后,三角形内的每个点都位于凸包中。然后对其他点重复上述步骤。搜索快速外壳算法。也可以使用delaunay三角剖分。您可以下载我的凸壳类@ phpclasses.org。它使用delaunay三角剖分。
https://stackoverflow.com/questions/22120645
复制相似问题