【OpenGL】幾何変換で五角形をごちゃごちゃにしてみた

こんにちは!

今回は前回作った五角形

これを色々変形させて遊んでみようと思います。

【OpenGL】GL_POLYGONで五角形つくってみた
こんにちは! 今日プログラミングで学んだことをここに残します。今回はGLUTで五角形を作ってみました。 下にソースコード載せときます。 ソースコード #include <stdio.h> #in...

こちらが前回の記事です。

 

そして、できた五角形がこれ(笑)

これを幾何変換って言うらしいですね。ソースコードは下に置いときます。

 

ソースコード

#include <stdio.h>
#include <GL/glut.h>
void gokakkei() {
	glClear(GL_COLOR_BUFFER_BIT);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
    
        //幾何変換
        glTranslated(0.2, 0.1, 0.0); //平行移動
	glRotated(150, 0, 0, 1); //回転
	glScaled(1.2, 2.0, 1); //拡大
    
        
	glColor3d(1.0, 0.5,1.0);//五角形の色
	glBegin(GL_POLYGON);
	glVertex3d(0, 0.4, -2);
	glVertex3d(-0.3, 0.15,-2);
	glVertex3d(-0.25, -0.3, -2);
	glVertex3d(0.25, -0.3, -2);
	glVertex3d(0.3, 0.15, -2);
	glEnd();
	glFlush();
}
void myInit(char* progname) {
	int width = 500, height = 500;
	double aspect = (double)width / (double)height;

	glutInitDisplayMode(GLUT_RGBA);
	glutInitWindowSize(width, height);
	glutInitWindowPosition(0, 0);
	glutCreateWindow(progname);

	glClearColor(1.0, 1.0, 1.0, 0.0);
	glutKeyboardFunc(myKeyboard);

	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	glOrtho(-1,1,-1,1,2,4);//平行投影
}

int main(int argc, char* argv[]) {
	glutInit(&argc, argv);
	myInit(argv[0]);
	glutDisplayFunc(gokakkei);
	glutMainLoop();
	return 0;
}

このソースコードをコピペしてもらえれば五角形が表示されます。

青色で書いてある部分が今回追加したコードで、このコードを入力することで五角形のオブジェクトを拡大したり回転させたり移動させたりできます。

コードを一つずつ見ていきましょう。

 

平行移動

glTranslated(x座標, y座標, z座標);

物体を任意の位置に移動させることができます。

回転

glRotated(角度, x軸, y軸, z軸);

物体を回転させたい時に使います。

zを回転軸にするとこんな感じ

 

拡大・縮小

glScaled(横, 縦, 奥行?);

様々な方向に拡大縮小することができます。

使用した参考書

OpenGLによる3次元CGプログラミング

OpenGLによる3次元CGプログラミング

林 武文, 加藤 清敬
2,376円(08/19 21:01時点)
発売日: 2003/04/01
Amazonの情報を掲載しています

コメント