-1

ワイヤーフレーム レンダーの 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;
4

2 に答える 2