【发布时间】:2010-08-02 20:35:38
【问题描述】:
我有一个简单的程序,它画了一个圆圈:/ 这工作正常...
for (k = 1; k < n+1+1; k++){
vertices[k].color = GU_COLOR( 0.0f, 0.0f, 1.0f, 0.0f );
vertices[k].x = cos_d( 360 - ((k-1) * dstep) );
vertices[k].y = sin_d( 360 - ((k-1) * dstep) );
vertices[k].z = 0.0f;
}
...
//Now draw it
sceGumDrawArray(GU_TRIANGLE_FAN, GU_COLOR_8888|GU_VERTEX_32BITF|GU_TRANSFORM_3D, n+1+1, 0, vertices);
但这不是:
for (k = 1; k < n+1+1; k++){
vertices[k].color = GU_COLOR( 0.0f, 0.0f, 1.0f, 0.0f );
vertices[k].x = cos_d( ((k-1) * dstep) );
vertices[k].y = sin_d( ((k-1) * dstep) );
vertices[k].z = 0.0f;
}
但这不应该是一样的吗 - 只是第一个循环顺时针计算顶点而第二个逆时针计算顶点不同吗? 它只是不使用第二个示例绘制顶点,这很尴尬......
还是我傻?
【问题讨论】:
-
如果您可以在调试器中运行它,或者将值打印到屏幕上,那么您将需要查看正在计算的值。查看输入 cos_d/sin_d 的内容,看看这些值是否符合您的预期。完成此操作后,将这些值输入 cos_d/sin_d,并将它们与您期望的值类型进行比较,或将它们与科学计算器输出的值进行比较。
-
您想习惯这样做的原因是图形编程需要大量数学,并且真的很容易出错。调试器或调试打印语句是避免发疯的唯一方法:)
标签: c++ geometry pspsdk playstation-portable