1

新しい線が最初の線に垂直になり、その中央を通過するように、「ミラーリング」する必要がある線分 (x1, y1)、(x2, y2) があります。

線分 (0,0),(2,2) は新しい線分 (0,2),(2,0) を返す必要があります

これを処理するための関数/式を手伝ってくれる人はいますか?

4

2 に答える 2

3

中点は (mx,my) = ((x1+x2)/2,(y1+y2)/2) です。

端点を中央を中心に 90 度回転するには、まずベクトルを計算します。

(dx,dy) = (x1-mx),(y1-my)

次に、90 度回転します。

dx1 = -dy
dy1 = dx

次に、新しいポイントは次のようになります。

x1 = mx+dx1
y1 = my+dy1

x2、y2 について繰り返します。

注意すれば、ステップを組み合わせることもできます。

于 2011-09-09T21:38:13.830 に答える
2

対称性を探しているようです。それを行う良い方法は、スケーリング マトリックスを使用することです。

scaling_matrix

vx、vy、vz はスケーリングの係数です。px,py,pz は点の座標です。ポイント座標のスケール行列を乗算すると、そのポイントのスケーリングされた座標が得られます。

vx=vy=vz= 1 のスケーリング行列は恒等変換です。ミラー効果を得るには、対称を実行する軸の行列係数を反転するだけです。

例えば ​​:

1  0 0|px

0 -1 0|py

0  0 1|pz

指定されたベクトルの y 軸に対する対称点を計算します。

于 2011-09-09T21:44:07.173 に答える