Q
Svg爲矩陣分解
7
A
回答
10
在這個問題上有很多需要閱讀和學習的內容。我會給出一個基本的答案,但請注意,如果你正在嘗試做一個遊戲或動畫,這不是實現它的方法。對於旋轉a == cos(angle)
和b == sin(angle)
var r, ctm, sx, sy, rotation;
r = document.querySelector('rect'); // access the first rect element
ctm = r.getCTM();
sx = ctm.a;
sy = ctm.d;
現在:
a == sx
和d == sy
,所以你訪問這些像這樣。阿辛和阿科斯不能單獨給你完整的角度,但他們可以一起。你想用反正切,因爲tan = sin/cos
和只是這樣那樣的問題,你真的想使用atan2
:
RAD2DEG = 180/Math.PI;
rotation = Math.atan2(ctm.b, ctm.a) * RAD2DEG;
如果你研究的inverse trigonometric functions和unit circle你就會明白爲什麼這個工程。
這是W3C在SVG轉換上的不可或缺的資源:http://www.w3.org/TR/SVG/coords.html。向下滾動一下,你可以閱讀更多關於我上面提到的內容。
更新,示例用法如何以編程方式做動畫。保持轉換單獨存儲,並在更新時轉換,覆蓋/更新SVG元素轉換。
var SVG, domElement, ...
// setup
SVG = document.querySelector('svg');
domElement = SVG.querySelector('rect');
transform = SVG.createSVGTransform();
matrix = SVG.createSVGMatrix();
position = SVG.createSVGPoint();
rotation = 0;
scale = 1;
// do every update, continuous use
matrix.a = scale;
matrix.d = scale;
matrix.e = position.x;
matrix.f = position.y;
transform.setMatrix(matrix.rotate(rotation));
domElement.transform.baseVal.initialize(transform); // clear then put
相關問題
- 1. 將矩陣分解爲初等矩陣
- 2. 矩陣分解
- 3. UIView轉換爲SVG矩陣
- 4. SVG矩陣到Android圖形矩陣
- 5. Scikit學習非負矩陣分解(NMF)爲稀疏矩陣
- 6. 分矩陣爲n個矩陣
- 7. CSR矩陣的LU分解
- 8. 4x4矩陣分解算法
- 9. 矩陣分解算法
- 10. OpenCV:基本矩陣分解
- 11. Python的矩陣分解
- 12. matlab:稀疏矩陣分解
- 13. SVG旋轉變換矩陣
- 14. 分割三維矩陣劃分爲多個二維矩陣
- 15. 大型稀疏矩陣上的快速非負矩陣分解
- 16. 在C++中將矩陣分解成方形子矩陣
- 17. 如何將正方形矩陣分解爲正方形子矩陣?
- 18. 如何將矩陣分解爲連通分量的總和?
- 19. 爲什麼將R拆分矩陣中的split()分解爲向量,以及如何獲得矩陣結果?
- 20. 矩陣分配
- 21. LU分解的矩陣乘法問題?
- 22. 複雜矩陣的Schur分解
- 23. 哈爾分解的矩陣歸一化
- 24. 矩陣的Svd和Eigen分解
- 25. 三對角矩陣的LU分解(Java)
- 26. 應用上QR大型矩陣分解
- 27. 瞭解cudaMalloc的使用分配矩陣
- 28. SciPy的LU分解置換矩陣
- 29. 矩陣代數設計分解
- 30. 分解轉化的樞軸矩陣
幫我解決這個問題。 – rsk 2012-01-02 09:17:22