Title: ??(rotation)
14? ???? ??? ?? ??
- ????
- ?? - ?????
- ?? ??? ???
- ??(rotation)
- ??(translation)
- ????(scaling)
- ??(shear)
- ???? ????? ??
- ??? ?????? ??? ????? ???? ??? ??
2???? ???
- typedef GLfloat point33
- point3 vertices8 -1.0,-1.0,1.0,-1.0,1.0,1.0
, - 1.0,1.0,1.0, 1.0,-1.0,1.0,
- -1.0,-1.0,-1.0,-1.0,1.0,-1.0,
- 1.0,1.0,-1.0, 1.0,-1.0,-1.0
- glBegin(GL_POLYGON)
- glVertex3fv(vertices0)
- glVertex3fv(vertices3)
- glVertex3fv(vertices2)
- glVertex3fv(vertices1)
- glEnd()
- ?? ?? ?? ?? ???? ??? ? ??
3???? ??
- ??? ???? ??? ??? ???? ?? ??? ?? ????? ?????? ??
4??? ??? ?? ????
- 6?? glBegin(GL_POLYGON) ??
- 24?? ???? ??? glBegin(GL_QUAD) ??
- ?? ? ???? ???? ??? ? ??? ???? ??? ??? ???? ???
5????
- GLfloat vertices83-1.0,-1.0,1.0,-1.0,1.0,
1.0, - 1.0,1.0,1.0, 1.0,-1.0,1.0,
- -1.0,-1.0,-1.0,-1.0,1.0,-1.0,
- 1.0,1.0,-1.0, 1.0,-1.0,-1.0
- GLfloat colors830.0,0.0,0.0,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
6????
- void quad(int a, int b, int c, int d)
-
- glBegin(GL_POLYGON)
- glColor3fv(colorsa)
- glVertex3fv(verticesa)
- glColor3fv(colorsb)
- glVertex3fv(verticesb)
- glColor3fv(colorsc)
- glVertex3fv(verticesc)
- glColor3fv(colorsd)
- glVertex3fv(verticesd)
- glEnd()
7????
- void colorcube()
-
- quad(0, 3, 2, 1)
- quad(2, 3, 7, 6)
- quad(0, 4, 7, 3)
- quad(1, 2, 6, 5)
- quad(4, 5, 6, 7)
- quad(0, 1, 5, 4)
-
??? ?? ??? ??? ??? ??? ????? ????
8??? ?? ?? ??
9??? ?? ?? ??
10???
- ?? ??? ??? ???????? ??? ???? ???? ??? ??? ??
????? ?? ??? ???. - ??? ???? ??? ?? ??? ?? ????? ??
- 6 glBegin, 6 glEnd
- 6 glColor
- 24 glVertex
- ???? ??? ???? ? ???
11?? ??
- OpenGL? ????(vertex array)??? ?? ??? ?????? ??
???? ??? ? ??? ?? - ?? ?? ??? ??? ????
- ??(vertex)
- ??(color)
- ?? ???(color index)
- ??(normal)
- ??? ??(texture coordinates)
- ?? ???(edge flag)
- ??? ??? ?? ???? ??? ??
12???
- ??? ?? ??? ???? ??? ??? ?? ??????
- glEnableClientState(GL_COLOR_ARRAY)
- glEnableClientState(GL_VERTEX_ARRAY)
- ??? ??? ??
- glVertexPointer(3, GL_FLOAT, 0, vertices)
- glColorPointer(3, GL_FLOAT, 0, colors)
3?? ??
float? ??
?????
??? ???
13????? ??? ??
- ? ????? ??? ??
- GLubyte cubeIndices24 0,3,2,1,
- 2,3,7,6,
- 0,4,7,3,
- 1,2,6,5,
- 4,5,6,7,
- 0,1,5,4
- ???? ? ?? ????? ???? ? ?? ??
- ????? ???? ?? glVertex ? glColor ???? ????
glDrawElements ? ???? ???
14??? ???
??? ????
???? ?
for(i0 ilt6 i) glDrawElements(GL_POLYGON, 4,
GL_UNSIGNED_BYTE, cubeIndices4i)
??????? ??
??????? ??
glDrawElements(GL_QUADS, 24, GL_UNSIGNED_BYTE,
cubeIndices)
??? ??? ???? ??
15???? ??
- ??? ??? ?? ??? ???? (??? ?? ??? ??)
vR(u)
QT(P)
16????
q f (p)
q f (?p1 ?p2) ? f(p1) ? f(p2)
???? ????
??? ???? ????
17????
18?? ??
- ?? ??
- ????? ??? ?? ???? ??
- ???? ??, ??
- ????, ??
- ??????? ???? ??? ? ???? ???? ???? ??? ??? ? ??
???? ??? ??? ?? ??? ???
19????? ??
20??
- P,Q, R ?? ????? ?
- u, v, w ?? ????? ??
- a, b, g ???
- p, q, r ?? ??
- -?? ?????? 4 ??? ??
- u, v, w ??? ??
- -?? ?????? 4 ??? ??
21??
- ??? ??? ?? ??
- ?? d? ??? ???? ??
- 3 ???
- PPd
22??? ?? ??? ????
- ??? ?? ??? ??? ???? ??? ??? ?? ?? ? ??? ?? ???
???? ??? ?? ? ??? ?? ? ??
??
???? ?? ?? ?? ???? ??
23??? ??? ??
- ?? ?????? ???? ??? ????
- p x y z 1T
- px y z 1T
- ddx dy dz 0T
- ??? p p d , ?
- xxdx
- yydy
- zzdz
24????
- ?? ????? 4 x 4 ?? T ? ???? ??? ??? ? ??
- pTp
- ???
- T T(dx, dy, dz)
- ?? ?? ??? ? ???? ??? ? ?? ?? ?? ??? ??? ? ????,
??? ??? ?? ????
25?? (2D)
- ??? ???? ? q ?? ??
- ???? ?? ??? q ? ?? ??
x r cos (f q) y r sin (f q)
xx cos q y sin q y x sin q y cos q
x r cos f y r sin f
26z ?? ???? ? ??
- 3???? z ?? ???? ? ??? ?? ???? z ??? ??? ???
- ?? z ?? ?? ????? 2?? ??? ??????
- ???????
- pRz(q)p
x x cos q y sin q y x sin q y cos q z z
27?? ??
R Rz(q)
28x ?? y ?? ???? ? ??
- z ?? ???? ? ????? ?????
- x ?? ???? ? ????, x ? ??? ???
- y ?? ???? ? ????, y ? ??? ???
29????
? ? ???? ?? ?? ?? (???? ??)
xsxx ysyx zszx
pSp
30??
sx -1 sy 1
original
sx -1 sy -1
sx 1 sy -1
31? ??
- ??? ???? ???? ?? ? ??? ??? ???? ??? ??? ? ??
- ?? T-1(dx, dy, dz) T(-dx, -dy, -dz)
- ?? R -1(q) R(-q)
- ??? ????? ???
- cos(-q) cos(q), sin(-q)-sin(q) ???
- R -1(q) R T(q)
- ???? S-1(sx, sy, sz) S(1/sx, 1/sy, 1/sz)
32??(shear)
- ??? ?? ??? ???? ?? ??
- ??? ?????? ?? ?? ????
33?? ??
x x y cot q y y z z
34??
- ??, ??, ???? ???? ????? ??? ???? ??? ??? ? ??
- ??? ??? ?? ???? ????? ?? MABCD ? ??? ??? ?? ???
p ? ??? Mp? ???? ?? ??? ??? ??? - ???? ??? ????? ??? ??? ????? ??? ???? ??? ????
35??? ??
- ???? ??? ???? ???? ??
- ????? ??? ?????
- p ABCp A(B(Cp))
- ?? ???? ?? ???? ??? ???? ??. ???? ????,
- pT pTCTBTAT
36??? ???? ? ??? ??
??? ?????? ??? x, y, z ?? ???? ? ???? ??? ??? ?
??
R(q) Rz(qz) Ry(qy) Rx(qx)
qx qy qz Euler ???? ??
???? ??? ????? ??? ?? ?? ??? ??? ? ??? ??? ????
37??? ???? ? ??? ??
38??? ?? ???? ???? ? ??
- ???? ???? ??
- ??
- ???? ??? ??? ??
- M T(pf) R(q) T(-pf)
39???(instancing)
- ?????, ?? ??? ? ???? ?? ???? ??? ??? ????? ????
- ???? ????(instance transformation)? ??
- ????
- ????
- ????
40???(instancing)
41??? ?? ?? 3D ??
- 1. Po ? ???? ??
- 2. u ? z-?? ????
- 3. z-? ???? ? ?? ??
- 4. 2? ??
- 5. 1? ??
42??? ?? ?? 3D ??
- u? ???
- v ? x-z ??? ?? ??? x?? ???? ??
- v ? z ?? ?? ??? y?? ???? ??
43??? ?? ?? 3D ??
??? ???
44??? ?? ?? 3D ??
45??? ?? ?? 3D ??
x ??? ??
46??? ?? ?? 3D ??
y ??? ??
47??? ?? ?? 3D ??