0
float pts[N][4]={{x1,y1,z1,v1},{x2,y2,z2,v2},...,{xN,yN,zN,vN}};
//in viewsight(0,0)-(w,h);
//N==w*h
//if pts[n][3]==0 then pts[n] is invalid

如何评估每个有效点的法线向量?

pts 是 Point-cloud-data 中的点,在 (w,h) 大小的视图中看到;

像这样的东西:

p11,p12,p13...p1w,
p21,p22,p23...p2w,
...
...
ph1,ph2,ph3...phw,

每个点都由它们的邻居关联,并共同为我们生成一个表面。

pts 排列紧密,行和列。我们的任务是找到一种方法来尽可能准确地评估每个点的法线向量朝向我们的视野。

我正在尝试实时执行此操作,因为 pts 是实时生成的。例如,一次计算 1024x1024 点。有人以前发布过解决方案吗?

4

2 回答 2

1

通常,曲面上顶点的法线计算为相邻多边形的法线向量的平均值。见:http ://www.opengl-redbook.com/appendices/AppH.pdf

在这种情况下,对于具有以下邻居的顶点 p55:

p44 p45 p46
p54 p55 p56
p64 p65 p66

你可以找到每个三角形的法线,

n1 = (p55 - p44) x (p55 - p45)
n2 = (p55 - p45) x (p55 - p46)
...

确保保持向量的方向,以便所有法线都指向同一方向(朝向观察者)。从那里你只需要标准化所有的向量,然后取它们的平均值。

于 2012-06-27T15:44:11.523 回答
0

不可能评估一个点的法线向量。一个点不能有法向量。飞机可以。

于 2012-06-26T06:46:04.817 回答