【发布时间】:2012-04-01 23:49:57
【问题描述】:
大家好,这是我正在做的一个家庭作业拼图,我的三角不太强,所以请耐心等待。
我有一个包含三个顶点的列表,并且我已经弄清楚了如何计算它们相遇的内角(我正在使用它来测试以确保它们具有有效的角度,因此多边形是有效的多边形) .
目前我连续取出三个顶点,然后计算到我想要角度的顶点的边,然后得到该点向量积的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 度中减去内角来获取外角,但这是为了确保多边形有效(顶点按逆时针顺序)的完整性检查。
给我的说明是确保顶点处矢量积的 sin 是正的,但我已经在纸上玩了一段时间了,我真的没有运气让它工作。
我知道这主要是一道数学题,但任何建议都会非常有用。
【问题讨论】:
-
请记住,这些都是二维向量,按逆时针顺序排列。