回転について質問です。 – プログラミング – Home

回転について質問です。
 
通知
すべてクリア

[解決済] 回転について質問です。


df
 df
(@df)
ゲスト
結合: 18年前
投稿: 3
Topic starter  

DirectX9のID3DXSprite::Draw()メソッドで、回転角をfloat型のラジアンで渡すのです
が、例えば45度回転させる場合は、ラジアンで渡すので
Rotate = 45 / 180 * M_PI
となると思うのですが、どの回転角度(45、90、135、180)で試しても、
どれも同じに描画されてしまいます。
角度の求め方が間違っているのと思うのですが、原因がわからず困っています。


引用未解決
トピックタグ
ee
 ee
(@ee)
ゲスト
結合: 18年前
投稿: 2
 

45 / 180
の部分が整数同士の除算なので0になっていると思う。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

eeさんの意見に同じですけれど、

これってビルド時に警告が出ませんでしったけ?
開発環境が良く分からないから何とも言いかねますけれど。
警告が出たときは警告の内容をきちんと把握した上で
対処を決めないと駄目ですよ。
もし、コンパイルオプションで警告レベルを下げているのであれば、
止めた方が良いです。
警告を無くすようにコーディングした方がバグも潰せますから。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

ちなみに警告ってwarningの事です。


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

# 定数0で除算しているわけではなく、整数演算で割り算した結果が0になるだけなので、
# C++としては意図通りの挙動ですし、lint系のツールでもでもかけない限り静的な警告はでないで
しょう。
# 少なくともVC7.1ではLevel4でも警告は出ませんでした。(これが0除算ならerror C2124ですが)
# 警告が出る前提でのお小言はどうでしょうか。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

すいません、確認までしてから書き込むべきでした。
0除算ではなくて型変換の警告が出るかと思ったんですが、
出ませんね。
良く考えたら逆の場合は出るんでしょうけれど、
longからfloatならでないですね。
floatからlongなら出るだろうけれど。
失礼しました。


返信引用
df
 df
(@df)
ゲスト
結合: 18年前
投稿: 3
Topic starter  

みなさんが仰られている通りにどうやら整数で割っていた為に正確な値が取れていなか
ったようです。
DirectDrawの時はこの記述で動いていたのですが、たまたま上手く動作していただけみ
たいですね。
今度からきちんと正確な値を代入してみます。
回答してくださりありがとうございました。助かりました。


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

#蛇足ですが、提示の45や180は(Lもないので)longではなくintで、int→float。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました