- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嘿,伙计们,这是我正在做的一个家庭作业难题,我的三角肌不太强,所以请耐心等待。
我有一个包含三个顶点的列表,并且我已经弄清楚如何计算它们相交的内角(我使用它来测试以确保它们具有有效的角度,因此该多边形是有效的多边形) .
目前,我连续拔出三个顶点,然后计算到我想要角度的顶点的边,然后得到该点 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/
我是一名优秀的程序员,十分优秀!