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は、行と列を1つずつしっかりと配置されています。そして、私たちの仕事は、私たちの視界に向かう各点の法線ベクトルを可能な限り正確に評価する方法を見つけることです。

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 に答える