Con*_*uhl 16 javascript arrays math geometry 2d
编辑:我用答案更新了程序,效果很好!
我正在制作一个程序(随意尝试),让用户绘制多边形,然后进行三角测量.他们可以单击添加顶点并按Enter键进行三角测量.无论如何,算法工作正常,只要我告诉它是否以顺时针或逆时针方式绘制点(现在我将它设置为仅与顺时针多边形一起工作).我一直试图弄清楚这几天,但不知道如何确定点是顺时针还是逆时针.尝试使用前面提到的程序绘制形状以获得更好的想法,您可以更好地体验我所说的内容,而不是尝试解释它.
以下是点的定义方式:
function Point(x, y) {
this.x = x;
this.y = y;
}
var vertices = [];
// Called on click
function addPoint(mouseX, mouseY) {
vertices.push(new Point(mouseX, mouseY));
}
Run Code Online (Sandbox Code Playgroud)
这是一个顺时针多边形的图像:

这是逆时针多边形的图像:

如果你能帮我弄清楚如何确定积分的"顺时针方向",我将非常感激!
kod*_*kod 24
使用鞋带公式计算多边形区域,但没有绝对值符号.如果结果为正,则点按逆时针方向排序,如果为负 - 顺时针方向.
function polygonArea() {
var area = 0;
for (var i = 0; i < vertices.length; i++) {
j = (i + 1) % vertices.length;
area += vertices[i].x * vertices[j].y;
area -= vertices[j].x * vertices[i].y;
}
return area / 2;
}
var clockwise = polygonArea() > 0;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3259 次 |
| 最近记录: |