0

System.Drawing.Drawing2D.Matrixには非常に便利なコンストラクターがあります

public Matrix(RectangleF rect, PointF[] plgpts)

基本的に、変換された長方形の長方形と平行四辺形を与えることができ、対応する変換を取り戻すことができます。私の場合、これは非常に役立ちます。

残念ながら、倍精度の行列が必要です。長方形と平行四辺形からSystem.Windows.Media.Matrixを計算する方法を知っている人はいますか?

4

2 に答える 2

0

これにはいくつかの数学が含まれます。

2つのベース間の変換行列を計算する必要があります。

最初に、長方形の基底ベクトルを計算し、次に平行四辺形の基底ベクトルを計算します。

次に、たとえばガウスの消去法を使用して、変換行列を計算できます。

http://en.wikipedia.org/wiki/Change_of_basis

于 2012-09-12T15:51:06.487 に答える
0

ブレイクの答えは正しいですが、単純な長方形があるため、少し簡単に計算できます。

3 つの列ベクトル c1、c2、c3 を持つ 3x3 行列を探します。c1 は (1,0,0) の画像、c2 は (0,1,0) の画像、c3 は (0,0,1) の画像です。

(0,0,1) が原点です。長方形の左下隅に配置できます。したがって、c3 は平行四辺形の左下隅です。

(1,0,0) は、長さ 1 の x 軸の方向です。したがって、c1 は、平行四辺形の右下隅と左下隅を長方形の幅で割った差分ベクトルです。

(0,1,0) についても同様です。したがって、c2 は、平行四辺形の左上隅と左下隅を長方形の高さで割った差分ベクトルです。

c1 と c2 の 3 番目のコンポーネントとして 0 を追加し、c3 の場合は 1 を追加する必要があることを付け加えておきます。

于 2012-09-12T16:00:37.347 に答える