正确的方法来获得向内指向法线的一列点

本文关键字:一列 方法 | 更新日期: 2023-09-27 17:50:55

我正在计算点列表的向内指向法线(dy,-dx)。然而,我认为我没有得到正确的结果,有没有一种方法来验证正确性?我正在使用:

List<Point> points = new List<Point>(7);
points.Clear();
points.Add(new Point(378, 110));
points.Add(new Point(190, 130));
points.Add(new Point( 65, 365));
points.Add(new Point(300, 100));
points.Add(new Point(500, 425));
points.Add(new Point(225, 395));
points.Add(new Point(378, 110));
int[] dx = new int[7];
int[] dy = new int[7];
// loop over line segments of hull to find inward-pointing normals, (dy,-dx)
for (int j = 0; j < 7- 1; j++)
{   
     dx[j] = P[j + 1].X  - P[j].X;
     dy[j] = P[j + 1].Y  - P[j].Y;
}
dx[7-1] = P[1].X - P[7-1].X;
dy[7-1] = P[1].Y - P[7-1].Y;

然而我认为我没有得到正确的结果。我:

dx          
[0] 125
[1] 110
[2] 78
[3] 122
[4] -275
[5] -160
[6] 125 
dy
[0] -235
[1] -30
[2] 10
[3] 315
[4] -30
[5] -30
[6] -235

有没有人有计算点列表向内指向法线的经验?

正确的方法来获得向内指向法线的一列点

看看这个网站可以帮你解决你的问题…

https://gamedev.stackexchange.com/questions/26951/calculating-the-2d-edge-normals-of-a-triangle

但是平面上的基本代数指出逆法向量(N)等于-N