0



ポイントLine1 = (x1,y1) , ( x2,y2) --- 小さい
Line2 = (x3,y3) , (x4,y4) --- 大きい 2 つの線分があります。

どちらかを使用して、Line1(より小さい) を回転させ、Line2(より大きい) に平行にする方法を教えてください。

1) (x1,y1) を回転の固定点として、または
2) (x2,y2) を回転の固定点として、または
3) 中心点を回転の固定点として

C#.NET を使用しています。そして Aforge.NET ライブラリ。

回転の固定点としての中心点

ありがとう

4

1 に答える 1

1

以下で説明するすべての操作は、アフィン変換行列として表現できます。

  1. 目的の回転中心を原点に移動します。
  2. 回転角度を計算するか、回転行列を直接計算します。下記参照。
  3. 原点を中心とした回転として、その回転を適用します。
  4. 逆平行移動を適用して、回転の中心を元の位置に戻します。

これらの 3 つの行列を乗算して、操作全体の単一の行列を取得できます。ペンと紙を使って、結果をアプリケーションにハードコーディングすることもできます。

回転行列の計算方法について: 線にまたがる 2 つのベクトルの内積をこれらのベクトルの長さで割ったものは、cos(φ)、つまりそれらの間の角度の余弦です。正弦は ±sqrt(1-cos(φ)²) です。回転行列で必要なのはこれら 2 つの数値だけなので、パフォーマンスに関して実際に角度を計算する必要はありません。ただし、符号を正しく取得するのは難しい場合があるため、プログラミングを容易にするという点では、 を 2 回呼び出しatan2、違いを 1 回呼び出し、その後に と を呼び出した方がよい場合がsinありcosます。

于 2013-02-09T03:36:25.677 に答える