質問: 法線を使って、ある地表の一点の高さを調べるには 法線を使って、ある地表の一点の高さを調べるには (x,y,z)座標の中のある一点(x,z)の地表の高さ(y) を知るのに、その一点のまわりの三点(a、b、c)の座標値(x,y,z) がわかっていれば、法線を使って知りたい点の高さがわかると聞いたのですが (a,b,c)でできる平面の法線を求めて 点(a)と調べたい点(t)を結んだ線(at)を作ると、 線(at)と法線は直行してるので 線(at)と法線の内積=0 という所までは、わかったのですが、 その内積を表す式と 法線の各成分、点(a)の各成分、調べたい点t(x,z)成分 はすでにわかっているので、調べたい点t(y)成分を 内積の式から抽出でき、 式を展開できるということの、 その式がどうしてもわかりません。 その式がわかれば、ある地点(x,z)の(y)成分がわかるらしいのですが、 どなたかご存知の方がおりましたら よろしくお願い致します。
回答: ano.3です。 何がお分かりにならないのかが、よくわからないのですが。 > y = y_a - [ k (x - x_a) + m (z - z_a)]/l > の形をだそうと考えていましたが(できませんでしたが) この式の導出の仕方がわからないという意味ですか? まず、内積の式が k (x - x_a) + l (y - y_a) + m (z - z_a) = 0 となることは良いですよね? ベクトル (k,l,m) と ベクトルta = ( x - x_a, y - y_a, z - z_a ) の内積は、各成分どうしかけたものを足せば良いわけです。 ベクトル(a_x,a_y,a_z) とベクトル(b_x,b_y,b_z) の内積は a_x b_x + a_y b_y + a_z b_z = 0 になります。 これを今の場合に適用すると、 k (x - x_a) + l (y - y_a) + m (z - z_a) = 0 ですね。 この先の変形がわからないという意味ですか? 第1項と第3項を右辺に移項します。 l (y - y_a) = - [ k (x - x_a) + m (z - z_a) ] lで両辺を割ります(lはエルです) (y - y_a) = - [ k (x - x_a) + m (z - z_a) ]/l 両辺にy_aを加える y = y_a - [ k (x - x_a) + m (z - z_a) ]/l 右辺はすべてわかっているという仮定なので、これで y の式が求まったことになります。 > どちらが正しいのか到底私には判断できません。 ano.2のご回答の式はフォローしていませんが、 たぶん、同じものを違うインプットで表現したものだと思いますよ。 ano.2のご回答の式は、おそらくabcの座標を使い表現したものだと思います。 ご質問の文面では、法線ベクトルがわかっているという前提なので、私はその情報を使った式を、提示しました。 ご質問には、 > 線(at)と法線の内積=0 > という所までは、わかったのですが、 > > その内積を表す式と > 法線の各成分、点(a)の各成分、調べたい点t(x,z)成分 > はすでにわかっているので、調べたい点t(y)成分を > 内積の式から抽出でき、 > 式を展開できるということの、 と書かれていて、それはまさしくこの式を求めるという意味ではないのですか? > inara様の式の方が答の精度が高そうな気はしますが(想像) 別に何も近似はしてないので、私の提示した式も、ちゃんと正確な式ですよ。 ちなみに、法線ベクトルは「外積」というのを使えば簡単に求まりますよ。 a: (xa,ya,za) b: (xb,yb,zb) c: (xc,yc,zc) とおくと、 k = (yb-ya)(zc-za) - (zb-za)(yc-ya) l = (zb-za)(xc-xa) - (xb-xa)(zc-za) m = (xb-xa)(yc-ya) - (yb-ya)(xc-xa) で座標から計算できます。 これを上の y = ... の式に代入すれば、たぶん、ano.2のご回答の式と一致するのではないかと思います。