ワイヤーフレーム レンダーの SDL コーディングに取り組んでいます。
二重の数値を使っていくつかの演算を行う必要がありますが、最後の合計で非常に奇妙な数値が得られます。
コードのスニペットは次のとおりです。
double screenCoordinate[2] = {0, 0};
// now map [-1,1] into the screen coordinates (0,width) and (0,height)
// where (0,0) is the top-left corner of the screen
screenCoordinate[0] = (vertexViewSpace(0) * (640.0/2.0));
screenCoordinate[0] += (640.0/2.0);
screenCoordinate[1] = (-vertexViewSpace(1) * (480.0/2.0));
screenCoordinate[1] += (480.0/2.0);
より簡単にデバッグできるように、各操作を 2 つの部分に分けました。
の最初の値が何であるかは問題ではありませんscreenCoordinate[0]
。2 番目の合計からscreenCoordinate[0]
は の半分に等しくなるためです640.0
。
についてscreenCoordinate[1]
も同様で、最初の乗算値は関係ありません。合計の最後の行は のscreenCoordinate[1]
半分に等しくなり480.0
ます。
なぜこれが起こっているのか本当にわかりません。誰でも私を助けることができますか?
PS私はあなたが提案しているすべてのデバッグを行いました。デバッグ中に読んだ例を彼女に示します。
screenCoordinate[0] = 1.9477670227253643e-017 * 320.0;
screenCoordinate[0] = 6.2328544727211657e-015 + 320.0;
screenCoordinate[1] = -1.2985113484835763e-017 * 240;
screenCoordinate[1] = -3.1164272363605833e-015 + 240.0;
したがって、電卓を使用すると、結果は次のようになります。
screenCoordinate[0] = 382,328544727211657;
screenCoordinate[1] = 208,835727636394167;
しかし、私は得る
screenCoordinate[0] = 320.00000000000000;
screenCoordinate[0] = 240.00000000000000;