2015-01-01 105 views
0

我需要解釋一個SVG輸入數據並確定顯示的點。轉換矩陣中的M11和M21單元有什麼區別?

在SVG格式中,任何點都可以是可以應用變換(平移/旋轉/縮放)的組(元素)的一部分。對於每一個點,我都需要冒泡並應用每個祖先的變換,以便找到該點在渲染中的位置。在閱讀了關於這個主題的一些網頁(並試圖記住學校)之後,我明白在.NET中這樣做的通常方法是使用3x3數學矩陣,所以我試圖找出System.Windows.Media.Matrix類。

自從我學數學已經有一段時間了,我不記得這一個特別的細節。

我打完了在LINQPad下面的代碼:

var matrix = new Matrix(1,1,1,6,0,0); 
var matrix2 = new Matrix(2,1,0,6,0,0); 
var matrix3 = new Matrix(0,1,2,6,0,0); 
var pts = new[]{ 
     new System.Windows.Point(0,0), 
     new System.Windows.Point(1,1), 
     new System.Windows.Point(2,2), 
     new System.Windows.Point(3,3), 
     new System.Windows.Point(4,4), 
     new System.Windows.Point(5,5) 
     }.ToArray(); 
pts.Select(org=>new{org,changed=matrix.Transform(org),changed2=matrix2.Transform(org),changed3=matrix3.Transform(org)}).Dump("Transformation Samples"); 

...在矩陣構造嘗試不同的值。

但是,似乎這些值對最終結果沒有影響。 new Matrix(,1 ,6,0,0);
新矩陣(,1 ,6,0,0); new Matrix(,1 ,6,0,0); (對於參數2和4同樣如此)

唯一重要的是這兩個(在本例中爲2)的總和。我認爲這是由於我的輸入數據有限以及給出其他輸入數據,可能會看到一些差異,這在某些視覺轉換中會有意義。

有人能幫我一下嗎?

回答

相關問題