#include <stdio.h>
#include <stdlib.h>
#include <GL/glut.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <cmath>
// p43 3차원 표현 코드
// 정점 부분 8개
GLfloat MyVertices[8][3] =
{
{-0.25,-0.25,0.25}/* 0번 */, {-0.25,0.25,0.25}/* 1번 */, {0.25,0.25,0.25}/* 2번 */, {0.25,-0.25,0.25}/* 3번 */,
{-0.25,-0.25,-0.25}/* 4번 */, {-0.25,0.25,-0.25}/* 5번 */, {0.25,0.25,-0.25}/* 6번 */, {0.25,-0.25,-0.25}/* 7번 */
};
GLfloat MyColors[8][3] =
{
{0.2,0.2,0.2}, {1.0,0.0,0.0}, {1.0, 1.0, 0.0}, {0.0,1.0,0.0}, {0.0,0.0,1.0},
{1.0,0.0,1.0}, {1.0,1.0,1.0}, {0.0,1.0,1.0}
};
GLubyte MyVertexList[24] = { 0,3,2,1, /* 4개씩 끊으면 면이됨 */ 2,3,7,6, 0,4,7,3, 1,2,6,5, 4,5,6,7, 0,1,5,4 };
// 반시계 방향으로 4개를 호출해야 앞면 나옴 ex 0321
void MyDisplay() {
glClear(GL_COLOR_BUFFER_BIT);
glFrontFace(GL_CCW);
glEnable(GL_CULL_FACE);
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_VERTEX_ARRAY);
glColorPointer(3, GL_FLOAT, 0, MyColors);
glVertexPointer(3, GL_FLOAT, 0, MyVertices);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(30.0, 1.0, 1.0, 1.0);
for (GLint i = 0; i < 6; i++)
glDrawElements(GL_POLYGON, 4, GL_UNSIGNED_BYTE, &MyVertexList[4 * i]);
glFlush();
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB);
glutInitWindowSize(300, 300);
glutInitWindowPosition(0, 0);
glutCreateWindow("OpenGL Drawing Example");
glClearColor(1.0, 1.0, 1.0, 1.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
glutDisplayFunc(MyDisplay);
glutMainLoop();
return 0;
}
반시계 방향으로 돌림
GLubyte MyVertexList[24] = { 0,3,2,1, / 4개씩 끊으면 면이됨 / 2,3,7,6, 0,4,7,3, 1,2,6,5, 4,5,6,7, 0,1,5,4 };
// 반시계 방향으로 4개를 호출해야 앞면 나옴 ex 0321
에서 반시계 방향으로 돌린다.
glFrontFace(GL_CCW);
glEnable(GL_CULL_FACE); // CULL FACE 보이지 않는 면은 지워라 = 기능
이렇게 정점들을 관리하는게 메모리 관리에 좋다.
왜? =>
960 = 6(면 6개) x 4(한 면에 정수 4개 0321) x 8 + 3 x 8 x 32
2304 비트 = 6 x 4 x 3 x 32
pythin -> DLL -> 유니티 import -> c# 사용가능
모델 x -> 전역
삼각형 평면 보장
집중해야됨
V = 종점 - 시점 == "벡터"
Q = V + P
Q = 벡터 + 점
점 P를 벡터 V 만큼 더해서 보내라 -> Q됨
V = P + (1/2)(Q - P)
P = 점, (1/2)(Q - P) = 점
V = P + t (Q - P) = (1 - t)P + (t)Q (0 ≤ t ≤ 1)
t = 0일 떄 P 나옴
t = 1일 때 Q 나옴
모든 점 표현가능.
Q1)
(1 - t)P + (t)Q
( (1 - 2/5) x (-2, -4) ) + 2/5 x (4, 2)
3/5 x (-2, -4) => (-6/5, -12/5)
- (8/5, 4/5)
V` = (2/5, -8/5)
Q2) P(-2, -4)이고 Q(4, 2)인 경우 V = (10/4, 2/4)일 때 t값을 구하시오
= (1 - t)P + (t)Q = (10/4, 2/4)
(1 - t) x (-2, -4) + t x (4, 2) = (10/4, 2/4)
-2 x (1 - t) + 4t = 10/4
-4 x (1 - t) + 2t = 2/4
-2 + 2t + 4t = 10/4
-4 +4t + 2t = 2/4
6t -2 = 10/4
6t -4 = 2/4
6t = 10/4 + 8/4
6t = 14/4
t = 16/4 * 1/6
t = 1/3
??