xcodeにてopenglを用いて3次ベジエ曲線を複数本描画したいのですが、一本だけ引くプログラムからどう改良すれば良いのか分かりません。
以下追記参照
1本だけ描画するプログラムは以下を用いています。
2本、3本とベジエ曲線を同一ウィンドウの中に表示するにはどこに何を加えれば良いのか(座標点は別に与えて)教えて頂けると嬉しいです。
宜しくお願い致します。
#include <GLUT/glut.h>
#include <stdlib.h>
GLfloat ctrlpoints[4][3] = {
{-4.0,-4.0, 0.0},
{-2.0, 4.0, 0.0},
{ 2.0,-4.0, 0.0},
{ 4.0, 4.0, 0.0}
};
GLfloat white[] = {1.0, 1.0, 1.0, 1.0};
GLfloat yellow[] = {1.0, 1.0, 0.0, 1.0};
void display(void)
{
int i;
glClear(GL_COLOR_BUFFER_BIT);
glColor4fv(&white[0]);
glBegin(GL_LINE_STRIP);
for (i = 0; i <= 30; i++)
glEvalCoord1f((GLfloat) i/30.0);
glEnd();
/* 制御点を描く */
glPointSize(5.0);
glColor4fv(&yellow[0]);
glBegin(GL_POINTS);
for (i = 0; i < 4; i++)
glVertex3fv(&ctrlpoints[i][0]);
glEnd();
glFlush();
}
void resize(int w, int h)
{
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if (w <= h)
glOrtho(-5.0, 5.0, -5.0*(GLfloat)h/(GLfloat)w,
5.0*(GLfloat)h/(GLfloat)w, -5.0, 5.0);
else
glOrtho(-5.0*(GLfloat)w/(GLfloat)h,
5.0*(GLfloat)w/(GLfloat)h, -5.0, 5.0, -5.0, 5.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void keyboard(unsigned char key, int x, int y)
{
switch (key) {
case '\33':
case 'q':
case 'Q':
exit(0);
break;
default :
break;
}
}
void init(void)
{
glClearColor(0.0, 0.0, 0.0, 0.0);
glMap1f(GL_MAP1_VERTEX_3, 0.0, 1.0, 3, 4, &ctrlpoints[0][0]);
glEnable(GL_MAP1_VERTEX_3);
}
int main(int argc, char** argv)
{
/* 初期化 */
glutInit(&argc, argv);
/* ウィンドウの生成 */
glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE | GLUT_DEPTH);
glutInitWindowPosition(200, 50);
glutInitWindowSize(300, 300);
glutCreateWindow(argv[0]);
/* OpenGL 初期化ルーチンの呼出し */
init();
glutDisplayFunc(display);
glutReshapeFunc(resize);
glutKeyboardFunc(keyboard);
glutMainLoop();
return 0;
}