好的,我有一个编程任务,cyrus-beck算法。该算法需要normal vector
指向任何凸多边形内部。
现在我只是检查功能,检查点是在边缘内还是在边缘外。
This question告诉我如何计算法向量,但它给出了两个结果。我仍然在努力选择应该使用哪种向量。
什么是指向多边形内部的法向量的标准?
是否有任何公式/方法可以计算多边形中任何边的法线(指向内部)?
请轻松解释,因为我不太了解矢量和数学的东西。
答案 0 :(得分:3)
如果顺时针顺序有n个点p [],那么为了使点p [i]和p [i + 1]之间的边缘向内垂直,你可以旋转向量p [i] - > p [i + 1]顺时针旋转90度。那就是:
double dx = p[i+1].x - p[i].x; // x component of edge
double dy = p[i+1].y - p[i].y; // y component of edge
double ndx = dy; // x component of normal
double ndy = -dx; // y component of normal
(注意最后一条边使用p [n-1]和p [0](按此顺序))。
如果你有逆时针顺序的点,则否定n的两个分量。