ページ 11

源流

Posted: 2013年8月03日(土) 17:59
by 回転行列について

コード:

DrawTriangle( dx/2-5*sin(ang), dy/2+5*cos(ang), 
                     dy/2-2*cos(ang)-10*sin(ang), dy/2-2*sin(ang)+10*cos(ang),
                     dx/2+2*cos(ang)-10*sin(ang), dy/2+2*sin(ang)+10*cos(ang),
                     -1, TRUE ) ;
上記のように逆三角形を頂点(0,5)(-2,10)(2,10)で(20,20)を軸にして回転させたいのですがうまく出来ません。
何がおかしいのでしょうか。

Re: 源流

Posted: 2013年8月03日(土) 18:03
by みけCAT
dx,dyには何が入りますか?

Re: 源流

Posted: 2013年8月03日(土) 18:05
by 源流
両方共20が入っています。

Re: 源流

Posted: 2013年8月03日(土) 18:08
by みけCAT
(x,y)を(u,v)を中心として反時計回りにangラジアン回転させたあとの座標(xx,yy)は

コード:

// (x,y)をx軸方向に-u、y軸方向に-v平行移動し、回転の中心を原点にする
x2=x-u
y2=y-v

// 回転行列で回転する
x3=cos(ang)*x2-sin(ang)*y2
y3=sin(ang)*x2+cos(ang)*y2

// 回転後の座標をx軸方向にu、y軸方向にv平行移動し、回転の中心を本来の位置に戻す
xx=x3+u
yy=y3+v
という式で計算でき、まとめると

コード:

xx=cos(ang)*(x-u)-sin(ang)*(y-v)+u
yy=sin(ang)*(x-u)+cos(ang)*(y-v)+v
となります。

追記
DXライブラリだと、y軸が反転している影響で時計回りになるかもしれません。

Re: 源流

Posted: 2013年8月03日(土) 18:10
by みけCAT
回転行列について さんが書きました:何がおかしいのでしょうか。
引数の式がおかしいです。