Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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
在openGL中获取圆上彼此相等的点_Opengl_Geometry - Fatal编程技术网

在openGL中获取圆上彼此相等的点

在openGL中获取圆上彼此相等的点,opengl,geometry,Opengl,Geometry,我试图在OpenGL中为编织模式编写代码。 现在,我正在尝试使用一个圆圈为类似的模式编写代码。 我用点画了一个圆,每个点都是用cos和sin函数画的。 我理解这并不像SeigeLord的方法那样有效,因为它更高效地利用了资源。 我能得到圆,我想得到它周长上的点 我的代码: #include<GL/glut.h> #include<stdio.h> #include<math.h> int n, r; void display() { int i,

我试图在OpenGL中为编织模式编写代码。

现在,我正在尝试使用一个圆圈为类似的模式编写代码。 我用点画了一个圆,每个点都是用cos和sin函数画的。 我理解这并不像SeigeLord的方法那样有效,因为它更高效地利用了资源。 我能得到圆,我想得到它周长上的点

我的代码:

#include<GL/glut.h>
#include<stdio.h>
#include<math.h>

int n, r;

void display()
{
    int i, j;
    glClearColor(0.0, 0.0, 0.0, 1.0);
    glClear(GL_COLOR_BUFFER_BIT);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(-50, 50, -50, 50);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    for (i = 0;i <= 360;i += 1)
    {
        glBegin(GL_POINTS);
        glVertex2f(r*cos(i), r*sin(i));
        glEnd();
    }
    /*for (i = 0;i < 360;i += 10)
    {
        glBegin(GL_LINES);
        glVertex2f(r*cos(i), r*sin(i));
        glVertex2f(r*cos(i + 300), r*sin(i + 300));
        glEnd();
    }*/
    glFlush();
}
int main(int argc, char **argv)
{
    r = 30;
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
    glutInitWindowPosition(300, 50);
    glutInitWindowSize(800, 800);
    glutCreateWindow("Cylinder");
    glutDisplayFunc(display);
    glutMainLoop();
}
#包括
#包括
#包括
int n,r;
无效显示()
{
int i,j;
glClearColor(0.0,0.0,0.0,1.0);
glClear(GLU颜色缓冲位);
glMatrixMode(GL_投影);
glLoadIdentity();
gluOrtho2D(-50,50,-50,50);
glMatrixMode(GLU模型视图);
glLoadIdentity();

对于(i=0;i请注意,sin和cos的输入单位是弧度(即0到2*pi),而不是度(0到360)

for (i = 0;i <= 360;i += 1)
{
    glBegin(GL_POINTS);
    glVertex2f(r*cos(i * (M_PI / 180.)), r*sin(i* (M_PI / 180.)));
    glEnd();
}

for(i=0;i注意,sin和cos的输入单位是弧度(即0到2*pi),而不是度(0到360)。因此,您的代码可能是

for (i = 0;i <= 360;i += 1)
{
    glBegin(GL_POINTS);
    glVertex2f(r*cos(i * (M_PI / 180.)), r*sin(i* (M_PI / 180.)));
    glEnd();
}

用于(i=0;i Hi Bas,我知道了,圆被正确地渲染了,即使是度,你能建议一些方法来找到圆上的点,它们之间的距离相等。所以你想要一个给定的正数N个等距点,而不是示例中的360?如果不是,我不确定我是否理解这个问题?Hi Bas,我知道了,圆是rende红色,即使以度为单位,你能建议一些方法来找到圆上等距的点吗?那么你想要一个给定的正数N个圆上等距的点,而不是示例中的360?如果不是,我不确定我是否理解这个问题?