我使用JavaScript在HTML Canvas上绘图。
我有一个多边形表示为 [x,y] 坐标的数组。在我的情况下(专注于扩展玩家区域的游戏)我想要定期扩展多边形所代表的区域。我有两个随机的可能性 - 扩展现有顶点之一,或拆分其中一个。
我的方法效果很好,但我分裂线条有问题。我可以选择随机线(或更精确的两个随机相邻多边形),我可以在我的多边形数组中插入新的多边形。这很好。
为了找到新多边形的位置,我尝试使用中点公式。在我的代码中它是这样的:
var x_mid = Math.round((globalMap[v1][0] + globalMap[v2][0]) / 2);
var y_mid = Math.round((globalMap[v1][1] + globalMap[v2][1]) / 2);
但我发现它并不总能在线上找到正确的位置。有时它会在我的多边形内部结束,这是一个问题,因为对于扩展,我的脚本正在寻找周围的免费(非彩色)像素,它在这里找不到。
我责备 round()函数,但无法弄清楚如何确定,我最终会在画布上实际绘制的那一行?
它不一定是确切的中间线,如果有人知道其他技术,它只需要在边缘的某个地方,所以它可以在以后扩展而没有缺陷。非常感谢!