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点。是否有人先发布过决议?
答案 0 :(得分: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)
...
确保保持向量的方向,以便所有法线指向相同的方向(朝向观察者)。从那里你只需要对所有向量进行标准化,然后取其平均值。
答案 1 :(得分:0)
无法评估点的法向量。一个点不能具有法向量。飞机可以。