1

開始点と平面に基づく位置間のオフセットを指定して、XYZ 位置のリストを作成する必要があります。平面上ではこれは簡単です。必要なオフセットは、位置 0,0,0 から 3 つ下に移動してから 2 つ右に移動することだとしましょう

出力は次のようになります。

0,0,0 (starting position)
0,-3,0 (move down 3)
2,-3,0 (then move right 2)

同じことが別の開始位置にも当てはまります。たとえば、5,5,1 としましょう。

5,5,1 (starting position)
5,2,1 (move down 3)
7,2,1 (then move right 2)

問題は、平面がこの平らなグリッド上にないときに発生します。

3点が与えられた平面と法線ベクトルの方程式を計算できます。しかし、この方程式が与えられた場合、この XYZ 位置のデータセットを作成するにはどうすればよいでしょうか?

2 つの値が与えられたときに XYZ を解くことができることはわかっています。x=1 と y=1 を知っているとしたら、Z を解くことができます。位置をインクリメントし、この新しい平面の x と y に平行に移動するには、x 軸と y 軸の両方で線形方程式を見つける必要があると思います。次に、Z を解くだけです。これを達成する方法がわかりません。

もう 1 つの問題は、ベース プレーンに対するこのプレーンの角度、傾き、および回転を計算する必要があることです。

例えば:

P1=0,0,0 and P2=1,1,0 the tilt=0deg angle=0deg rotation=45deg.
P1=0,0,0 and P2=0,1,1 the tilt=0deg angle=45deg rotation=0deg.
P1=0,0,0 and P2=1,0,1 the tilt=45deg angle=0deg rotation=0deg.
P1=0,0,0 and P2=1,1,1 the tilt=0deg angle=45deg rotation=45deg.

私はこれらの問題の両方について何時間も検索してきましたが、常に平面の方程式に行き着きました。平面に平行になるように x、y を正しく操作し、その情報を使用してこれらの角度を見つけます。これは解決すべき多くのジオメトリであり、ベース プレーンに対する 3 つの角度の計算は言うまでもなく、この点のリストの計算方法に関する詳細情報を見つけることができません。

これに関するヘルプや洞察を歓迎します。私がここで直面しているこの問題に光を当てるには、単純な古い数学または C++ への参照が最適です。

ありがとう、マット

4

1 に答える 1

1

平面は、点と直交基底ベクトルのペア (長さ 1、互いに 90 度の 2 つのベクトルを意味する)によって定義されると考えることができます。最も基本的な平面は次のように定義できます。

p0 = (0, 0, 0) #Origin point
vx = (1, 0, 0) #X basis vector
vy = (0, 1, 0) #Y basis vector

X 方向とY 方向にp1オフセットされた点を見つけるには、次の式を使用します。dxdy

p1 = p0 + dx * vx + dy * vy

オフセットが指定された軸に沿っている場合、この式は常に機能します (そのように聞こえます)。これは、ベクトルが回転されている場合でも当てはまります。これが、これから使用するプロパティです。

したがって、回転した平面に沿ってオフセットされた点を見つけるには:

  1. デフォルトの基底ベクトル (vxおよびvy、上記) を使用します。
  2. 必要な平面が定義されるまで、それらを回転させます (問題の定義方法に応じて、原点も回転する必要がある場合とない場合があります)。
  3. 公式を当てはめて答えを出してください。

ローテーションを行っているときにいくつかの癖がありますが (順序が重要です!)、それが基本的な考え方であり、正しい軌道に乗るには十分なはずです。幸運を!

于 2012-09-13T18:31:09.583 に答える