画像処理 その6
■ このスレッドは過去ログ倉庫に格納されています
004943
2006/02/24(金) 23:44:19あれから、色々と検証したのですがAPIのLPtoDP関数と
同等の関数(int版, double版の2つ)を作成して
それぞれの関数を10万回実行したときの時間を計測したのですが
LPtoDP と自作同等関数 (int版) がほぼ同じ時間だったので
APIも内部は整数で計算していると思われます。
(double版は倍以上の時間がかかっていたため)
結局、整数で計算して四捨五入するようにしたのですが
やはり>>44の※1, ※2のようなケース(小数部0.5前後)で
APIと結果が異なってしまいます。
四捨五入は>>48さんの式をお借りして
// 余り算出
int nMod = (PX * a + b) % c;
// 余りが、割る数 c の半分以上の場合を四捨五入対象とする
if (abs(nMod) >= abs(c >> 1))
{
// 四捨五入 (割られる数、割る数の符号チェックの方が確実?)
if (QX > 0) { QX++; } else { QX--; }
}
以上のような処理で行っています。
ここまでやっても、APIと異なるので何か特別な方法があるような気がして
ならないのです。
どうか、よいお知恵をお貸しください。
>>48さん
最適化した式をありがとうございます。
しかし、まだ最適化以前の問題ですので・・・今後、参考にさせていただきます。
■ このスレッドは過去ログ倉庫に格納されています