Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 计算圆的顶点_C++_Geometry_Pspsdk_Playstation Portable - Fatal编程技术网

C++ 计算圆的顶点

C++ 计算圆的顶点,c++,geometry,pspsdk,playstation-portable,C++,Geometry,Pspsdk,Playstation Portable,我有一个简单的程序,它画了一个圆:/ 这个很好用 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 dra

我有一个简单的程序,它画了一个圆:/ 这个很好用

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);
(k=1;k 但这并不是:

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;
}
(k=1;k 但这不应该是相同的吗?只是第一个循环顺时针计算顶点和第二个逆时针计算顶点的不同而已? 这只是尴尬,它只是没有绘制顶点使用第二个例子


还是我愚蠢

我不知道您正在使用的库,但您确定代码中没有混合弧度和度数吗?sin和cos函数采用弧度还是度数?

不确定如何绘制圆(我看到您创建了一个顶点列表,但对这些顶点的渲染一无所知),但是:

通常,当你从顺时针方向反转到逆时针方向时,你最终得到的是正常的反转,这意味着你看到的是圆的背面。而且,与大多数API一样,当查看某些内容(没有卷)的背面时,它不会被渲染


这称为反面剔除。

可能不会因为这样而绘制


“如果用户指定前向多边形具有顺时针缠绕,如果投影到屏幕上的多边形具有逆时针缠绕,则该多边形已旋转为背向摄影机,且不会绘制。”

推测
dstep
为360/n


作为一个美学点,使用
GL\u TRIANGLE\u FAN
你可能希望你的第一个点是圆的中心。

这不太可能是问题,因为它是单向的。我想,
cos\u d
意思是“度”。这正是我为什么这么想的原因。我想不出还有什么别的方法可以检查这一点,就是禁用背面剔除(如果在PSP SDK中可能的话)。另一种方法是将相机移动到对象的另一侧,然后查看它是否开始绘图:)如果可以在调试器中运行此操作,或将值打印到屏幕上,则需要查看正在计算的值。看看输入cos_d/sin_d的是什么,看看这些值是否符合您的期望。一旦你这样做了,将这些值输入cos_d/sin_d,并将它们与你期望的值类型进行比较,或者将它们与科学计算器输出的值进行比较。你想习惯这样做的原因是图形编程需要大量的数学知识,而且很容易出错。调试器或调试打印语句是防止出错的唯一方法:)