DrawRotaGraphについて

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

DrawRotaGraphについて

#1

投稿記事 by 山さん » 14年前

コード:

int DrawRotaGraph( int x, int y,
          double ExtRate, double Angle,
          int GrHandle , int TransFlag , int TurnFlag ) ;
でもっと細かく座標を指定したいです。
それで、x,yはint型ですがdouble型にできないのでしょうか?
そんな関数を自作することはできますか?


山さん

Re: DrawRotaGraphについて

#3

投稿記事 by 山さん » 14年前

sinとかcosを使っているのでfloatではなくdouble型がいいです。
DrawRotaGraphのように回転機能を持った関数がいいです。

史上最悪のデスペナ
記事: 521
登録日時: 14年前

Re: DrawRotaGraphについて

#4

投稿記事 by 史上最悪のデスペナ » 14年前

floatじゃなくてdoubleを求める理由をお聞きしてもいいですか?
普通に使う分であればfloatで十分事足りるのではないかと思うのですが・・・・・・・
いざとなったらdouble→float変換関数を使うとか・・・・?

naohiro19
記事: 256
登録日時: 15年前
住所: 愛知県

Re: DrawRotaGraphについて

#5

投稿記事 by naohiro19 » 14年前

DirectX(DXライブラリ等のライブラリ)の元の演算は float型で計算されていますので double型で計算することは許されていません

山さん

Re: DrawRotaGraphについて

#6

投稿記事 by 山さん » 14年前

double→float変換関数とはどのようなものですか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: DrawRotaGraphについて

#7

投稿記事 by softya(ソフト屋) » 14年前

山さん さんが書きました:double→float変換関数とはどのようなものですか?
関数ではなくキャストです。

double dx = 0.05;
float fx = (float)dx;
って事です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: DrawRotaGraphについて

#8

投稿記事 by softya(ソフト屋) » 14年前

それとDrawRotaGraphF()しかDXライブラリには用意されていませんので精度的に問題なければ(float)でキャストして使って下さい。
どうしても問題があれば、DXライブラリの作者さんに相談なさって下さい。
1以下の座標は表示では擬似的な位置になるのでドットがにじみます。doubleなんて精度で描画する意味はないので問題はないと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

山さん

Re: DrawRotaGraphについて

#9

投稿記事 by 山さん » 14年前

ありがとうございました。

山さん

Re: DrawRotaGraphについて

#10

投稿記事 by 山さん » 14年前

ありがとうございました。

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: DrawRotaGraphについて

#11

投稿記事 by ISLe » 14年前

ピクセル座標に関してはsoftyaさんのおっしゃるとおりですが、浮動小数点数に関して。

ちょっと前のスレでも話題になりましたが、(現時点で)DXライブラリを使っている限りdoubleで宣言してもfloatの精度でしか演算は行われません。
これはDirect3D9の仕様です。

doubleを使うことが禁止されているわけではないです。
Direct3D9で動くプログラムではただ無駄なだけです。

もしも将来DXライブラリがDirect3D11とかに対応したらdoubleはちゃんとdoubleの精度で演算されるようになります。
そのときは既存のソースコードをコンパイルし直しただけで異なる動作をするかもしれません。
Direct3Dを直接使うコードでも同じことが言えます。
そのような不具合を避けるにはfloatのみで注意深くコードを書く必要があります。

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前
住所: 北海道札幌市
連絡を取る:

Re: DrawRotaGraphについて

#12

投稿記事 by Dixq (管理人) » 14年前

現在のDXライブラリでも初期化前に
SetUseFPUPreserveFlag(TRUE);
を呼べばdouble精度が保てるようになります。
参考:http://hpcgi2.nifty.com/natupaji/bbs/pa ... st&no=1385

ただ、本当にdouble精度が必要なのかよく考えてからでも良いと思います。
多くの場合float精度でも問題無いと思いますよ。

閉鎖

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