• 締切済み

高さフィールドにおける勾配ベクトル

2次元正規格子点で定義している高さフィールドの 勾配ベクトルを求めたいのですが、どうやってもとめればいいのでしょうか? 四つの格子点に高さのデータが入っていてそこから、勾配となるベクトルを簡単に求める方法があれば、どなたか教えてください。

みんなの回答

  • ere_Elba
  • ベストアンサー率52% (9/17)
回答No.2

i_、j_をそれぞれ、x、y方向の単位ベクトルとすれば grad{z(i_・x+j_・y)}は、最も急な勾配を表わします。 ここで、grad{z(i_・x+j_・y)}=i_・(Δz/Δx)+j_・(Δz/Δy)です。 従って、求めたい勾配のx、y 方向成分は、 Δz/Δx(x方向だけを取り上げた場合の勾配)、 Δz/Δy(y方向だけを取り上げた場合の勾配) なので、それぞれの点毎に x方向、y方向に、それぞれ、Δz/Δx、Δz/Δyを取った ベクトルを合成すれば、それがその点の勾配になります。 Δx、Δyは差分ですが、これが小さければ小さいほど 正確な勾配が出せます。

  • spring135
  • ベストアンサー率44% (1487/3332)
回答No.1

高さ場の分布をφ(x,y)とすると 勾配ベクトルv"=grad(φ)("はベクトルを表すとします。) 格子点はいろんな取り方がありますが(つまり領域を格子ネットで覆う場合、評価点周辺の格子点の選び方は十字型(中心を評価店にとる)にとるとか評価点を四辺形の一頂点にとるとかですが、目的に応じて決めればよいと思います。ここでは評価点(x,y)を中心に上下、左右に格子点を十字型にとると十字の各点はx1<x<x2,y1<y<y3で P1(x1,y),P2(x2,y),P3(x,y1),P4(x,y2) 各格子点におけるφの値をφ1,φ2,φ3,φ4を用いて grad(φ)=((φ2-φ1)/(x2-x1),(φ4-φ3)/(y4-y3)) 要するに勾配は1階差分であって、中心差分とするか、前進差分とするか、後退差分とするかは、適宜決めればよい。

kei0009
質問者

お礼

非常にわかりやすい返答ありがとうございます。 申し訳ないのですが、さらに質問があります。 今上記の高さフィールドを使って3DCGで山の地形を作っていて、そこに粒子の様な物を流したいと考えており高さフィールドからxとz方向の移動量はわかったのですが、3DCGの山に沿って斜面を流す場合y方向の移動量はどのように決定すればいいのでしょうか? 今は(φ2-φ1)/(x2-x1)と(φ4-φ3)/(y4-y3)の変位量が多い方の分だけ落としているのですがある程度正しく動いているように見えるものの、まだ少し不安があります。問題点があったらご指摘もらえるとうれしいです。

関連するQ&A

  • 勾配ベクトルについて

    勾配ベクトルと方向微分についての問題です。(2変数の場合) 平面状の点(x0、y0)と直線ax+by=cの距離dは d=|ax0+by0-c|/√a^2+b^2  ・・・★  となる事を示す。 直線ax+by=cを平面z=ax+byの等高線(高さc)と考えるとき、 (x0、y0)を通り、ax+by=cに平行な直線は ax+by=(1) であるので、2つの等高線 ax+by=cと ax+by=(1)との高さの差(正の値)は(2)となる。 2変数関数 ax+byの勾配ベクトルの大きさ(3)は(4)を表すから、点(x0、y0)と直線ax+by=cの距離をdとすれば、 (3)=(6)/(5)となる。 これにより★が成り立つ。 (4)には言葉が、それ以外は数式が入るようです。 どなたか、よろしくお願いします!!

  • 3次元の合成ベクトル点の定義

    3次元の3点を合成したときの合成ポイントとはどういう定義になりますか? 3次元(球体)のある3点と3点のベクトル合成点を繋げると4角錐になりますが、そのうちの1面が2等辺三角形になるのではないかと思いましたが、違いますか? ベクトル合成点とはどういうポイントにくるのでしょうか?

  • n次元ベクトルの外積の定義

    n次元ベクトルの外積の定義はどういうものなのでしょうか? そもそもできるのでしょうか?外積は3次元特有のものでしょうか? 例えば、n次元ベクトルの内積は、例えば (a1,a2,.....,an)・(b1,b2,.......,bn) =a1*b1+a2*b2+......+an*bn と定義できると思っています。 こういう感じでn次元ベクトルの外積は定義できますか? ご教授ください。

  • ベクトル場について

    2次元球面上に、零点を1つしかもたない滑らかなベクトル場を構成せよ。 という問題が解けません誰か教えてください。

  • ベクトルの外積 

    ベクトルの外積の2次元の計算で r×(r2-r1) の計算を考えているのですが 外積の定義を見ていると2次元では考えられないような気がするのですが この計算はできるのでしょうか?? 誰か詳しい方がいらっしゃればアドバイスお願いします。

  • 3次元のベクトル合成

    3次元における3点のベクトル合成点をエクセルで求めたいです。 例えば、 A点(339.92, -7.84) B点(126.17, +18.73) C点(214.52, -13.03) の3点があります。(X,Y)、Xが360度の円上のポイント、Yが0縦に+-の値のポイント。 2次元のベクトルなら、前に質問して計算式を教えていただいたのでわかるのですが、 https://okwave.jp/qa/q9142730.html 縦方向を含めた3次元のポイントを計算する方法が知りたいです。たくさん計算しないといけないので、エクセルの関数でたりたいのです。

  • ベクトル空間 次元 について

    前回質問(数ベクトル空間 ベクトル空間)させて頂いた内容です。 http://okwave.jp/qa/q8631000.html#answer 前回の質問内容を整理してわからなかった点を再度質問させて頂きます。 ベクトル空間の次元についてですが、以下のように理解しました。 Vはベクトル空間であるとします。 x,y,z∈Vについて、 (1)x,y,zのうち2つのベクトルが0なら1次元ベクトル空間 (2)x,y,zのうち1つのベクトルが0なら2次元ベクトル空間 (3)x,y,zがどれも0ベクトルでなければ3次元ベクトル空間 と理解しました。 R^2は2次元ベクトル空間 R^3は3次元ベクトル空間 R^nはn次元ベクトル空間 という説明がウェブ上で多々ありますが、 これは、ベクトル空間の「成分の数(項数)」であって次元とは関係 ないと理解しました。 ここまでで間違いありますでしょうか? 間違いがあればご指摘よろしくお願い致します。 *****以下、質問内容***** x,y,z∈Vについて、 (1)x,y,zのうち2つのベクトルが0なら1次元ベクトル空間 (2)x,y,zのうち1つのベクトルが0なら2次元ベクトル空間 (3)x,y,zがどれも0ベクトルでなければ3次元ベクトル空間 ですが、 (1)、(2)、(3)はいずれもR^3の部分空間とのことなのですが、この点がよくわかりません・・・ 私のイメージなのですが、 (1)⊂(2)⊂(3)のイメージがあるのですが、これは大きな間違いでしょうか? 3次元ベクトル空間の部分空間は2次元ベクトル空間と1次元ベクトル空間 と言ったイメージなのですが・・・ R^3の部分空間であるとは、「成分が3つのベクトル空間」の部分空間と言う事で、 次元とは無関係ですよね? 以上、ご回答よろしくお願い致します。

  • ベクトル解析の発散の定義について

    ベクトル解析の発散はその定義とは何でしょうか。ただし空間なので3次元までです。その場合、座標系に依存しない形式で表現できないでしょうか。(ξ1, ξ2, ξ3)を一般的な3次元の座標系と考えてその中での定義です。その定義が明確になると、3次元のデカルト座標系とか円筒座標系とか球座標系などのような特殊な事情の座標系に特化した表現に至る(ブレークダウンする)と思います。 例えば、ベクトルVがあったときにその発散とは、 「Vのξi方向に微分したベクトルとξi方向の単位接線ベクトルとの内積をとりiについて和をとる」 というものだと直交デカルト座標の表現(テキストでお馴染み)も出るのですが。 また、直交曲線座標(球、極、円筒の各座標を包括する)での表現も出てきそうです。 このような感じの定義はないでしょうか。

  • ベクトルとベクトルの交点の求め方

    2次元空間において、 ベクトル(a,b)とベクトル(c,d)の 交点の座標(x,y)を求める方法はありますか?

  • n次元の正規直交基底ベクトルの求め方

    ある1つのn次元ベクトルに対する正規直交基底ベクトル(無限に存在すると考えられます)をいくつか求めたいのですが、どのようなプログラムを作れば良いのか分からず困っています。どなたか教えて頂けないでしょうか。よろしくお願いします。