我正在使用 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);
我将每个操作分为两部分,以便更轻松地调试它。
的第一个值是什么并不重要screenCoordinate[0]
,因为从第二个总和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;