gpt4 book ai didi

java - 计算多边形顶点的外角

转载 作者:行者123 更新时间:2023-11-30 04:50:27 25 4
gpt4 key购买 nike

嘿,伙计们,这是我正在做的一个家庭作业难题,我的三角肌不太强,所以请耐心等待。

我有一个包含三个顶点的列表,并且我已经弄清楚如何计算它们相交的内角(我使用它来测试以确保它们具有有效的角度,因此该多边形是有效的多边形) .

目前,我连续拔出三个顶点,然后计算到我想要角度的顶点的边,然后得到该点 vector 积的 acos:

            double dx21 = one.x - two.x;
double dx31 = three.x - two.x;
double dy21 = one.y - two.y;
double dy31 = three.y - two.y;
double m12 = Math.sqrt(dx21*dx21 + dy21*dy21);
double m13 = Math.sqrt(dx31*dx31 + dy31*dy31);
double theta = Math.acos((dx21*dx31 + dy21*dy31)/ (m12 * m13));

我知道名义上我可以通过从 360 度减去内角来获取外角,但这是一个健全性检查,以确保多边形有效(顶点按逆时针顺序排列)。

我得到的注释是为了确保顶点处 vector 积的正弦值是正的,但我已经在纸上研究了一段时间,但我并没有真正幸运地让它发挥作用。

我知道这主要是一个数学问题,但任何建议都会非常有用。

最佳答案

这里有一些注释。

首先,通常定义的外角为 180 度 - 内角,或 pi - 内角,具体取决于您的单位。请参阅here 。快速的完整性检查是将外角加在一起,以确保得到一个圆。

其次,您可能知道这一点,但我应该指出,Math.acos 返回以弧度为单位的角度,而不是度数。

第三,请注意,余弦无法区分凸角和凹角,这意味着您的内角方法仅对凸多边形有效。使用叉积可能会更好,它会给出角度的正弦值。

最后,回答你的问题,这里有一个提示:你查看 p2->p1 和 p2->p3 中的 vector ;当我读到这个问题时,我想象了 p1->p2 和 p2->p3 中的每个 vector 。任何一种方法都是解决问题的完全有效的方法,但请考虑一下这些 vector 对之间的角度有何不同,以及这与您的问题有何关系。

关于java - 计算多边形顶点的外角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9969393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com