xcodeにてopenglを用いて3次ベジエ曲線を複数本描画したい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
mikonyan

xcodeにてopenglを用いて3次ベジエ曲線を複数本描画したい

#1

投稿記事 by mikonyan » 11年前

はじめまして、プログラミング初心者です。
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;
}


“C言語何でも質問掲示板” へ戻る