[線代] 將圖形原地旋轉

看板Math作者 (Neisseria)時間7年前 (2016/10/19 11:43), 7年前編輯推噓1(106)
留言7則, 3人參與, 最新討論串1/1
其實我是在練習用電腦處理 2D 圖像 但是碰到和線代有關的問題,想不到如何處理 我想要的效果是讓圖形原地旋轉 有點像地球自轉那樣 相關的操作的方式有: Translate: 試起來是平移矩陣 Rotate: 試起來是旋轉矩陣,旋轉方式為 |cos -sin| | | |sin cos | Rotate 內部使用 Concat Add: 和另一個矩陣相加 Concat: 和另一個矩陣相乘 目前想到是先 Rotate 後再 Translate 回來 但試了半天,試不出想要的效果 上來問各位大大 有需要什麼可再補充 在這裡先感謝各位大大 [Update] 後來解決方式就是把圖拉回原點再旋轉,然後再把圖拉回來 步驟如下: (x, y) = 圖形所在的座標 (w, h) = 圖形的寛度和高度 theta = 想旋轉的角度 1. Translate(-x - w/2, -y - h/2) 2. Rotate(theta) 3. Translate(x + w/2, y + h/2) 直接 Rotate 的話,圖會跑掉,很難算 Translate 的距離 雖然線代還是不會,至少解決了問題 (遮臉) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.216.1.85 ※ 文章網址: https://www.ptt.cc/bbs/Math/M.1476848594.A.4EF.html

10/19 12:12, , 1F
應該先translate到你要旋轉的基準在rotate吧?
10/19 12:12, 1F

10/19 12:13, , 2F
有需求的話再換回原本的原點
10/19 12:13, 2F
感謝 j 大提供靈感 ※ 編輯: Neisseria (125.227.36.84), 10/19/2016 14:37:50

10/20 01:37, , 3F
給個小知識, 旋轉圖形不要直接取值, 而是逆向取
10/20 01:37, 3F

10/21 02:29, , 4F
rotation matrix 就是繞原點轉 所以如果圖形不在原
10/21 02:29, 4F

10/21 02:31, , 5F
點就會繞原點公轉
10/21 02:31, 5F

10/21 02:32, , 6F
其實在工程理這種rigid body motion都用
10/21 02:32, 6F

10/21 02:33, , 7F
homogeneous transformations matrix就不用分好幾步
10/21 02:33, 7F
文章代碼(AID): #1O1klIJl (Math)