源流

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
回転行列について

源流

#1

投稿記事 by 回転行列について » 12年前

コード:

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)を軸にして回転させたいのですがうまく出来ません。
何がおかしいのでしょうか。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 源流

#2

投稿記事 by みけCAT » 12年前

dx,dyには何が入りますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

源流

Re: 源流

#3

投稿記事 by 源流 » 12年前

両方共20が入っています。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 源流

#4

投稿記事 by みけCAT » 12年前

(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軸が反転している影響で時計回りになるかもしれません。
最後に編集したユーザー みけCAT on 2013年8月03日(土) 18:12 [ 編集 1 回目 ]
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 源流

#5

投稿記事 by みけCAT » 12年前

回転行列について さんが書きました:何がおかしいのでしょうか。
引数の式がおかしいです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

“C言語何でも質問掲示板” へ戻る