Pythonを使って二次元座標で任意の点を回転させた
前提
CG-ARTS協会(2015)『コンピュータグラフィックス』の2-1 二次元座標変換の回転 p23がよくわからず、理解の足しになると思いPythonで書いてみた(がいまだによくわかっていない)。
- 出版社/メーカー: 画像情報教育振興協会
- 発売日: 2016/09/20
- メディア: 単行本
- この商品を含むブログを見る
以下の数式は、二次元直交座標系の点(x,y)を、原点(0,0)を軸として反時計回りに角度θ分回転する式。回転後の座標は点(x',y')になる。
x' = xcosθ - ysinθ
y' = xsinθ + ycosθ
CGソフトでオブジェクトを回転(rotation)するときはこの式が使われる。
今思えば、「なぜこの式になるのか」が問題だったので、コードを書くよりこの式の証明やっておけばよかったと思った...。 ちなみにnumpyとmatplotlibを使うのはほぼ初めて。
出力
横軸をx、縦軸をyとする二次元直交座標系に点(2,0) (2,2)(4,0)(4,2)を取り、原点(0,0)を軸として、これらの点すべてを反時計回りにθ = 45°分回転させた。
変換前の点を青で、変換後の点を赤でプロットしている。
コード
所感
プログラミング書く前にやることを前倒しで徹底的に紙に書いたら大分捗った。 次からはこうしよう。