3 x y z a 0 0 0 b 1 0 0 c 1 0 1 d 0 0 1 e 0 1 0 f 1 1 0 g 1 1 1 h 0 1 1 a b c d b f g c c g h d d h e a a e f b h g f e x z y 1 1 1 a b c d e f g h (0,0,0)
6 a b c d b f g c c g h d d h e a a e f b h g f e l n l l n c g h d b e f
7 V1 ⇥ V2 = (dx1, dy1, 0) ⇥ (dx2, dy2, 0) = 0, 0, dx1dy2 dx2dy1 dx1dy2 dx2dy1 8 < : > 0 = 0 < 0 :表を向いている :裏を向いている:つぶれている(見えない) V2 = P2 P0 = (dx2, dy2, 0) V1 = P1 P0 = (dx1, dy1, 0) P0 P1 P2 V1 V2
!" − !$ × !& − !$ = 5 − 1, 5 − 3 × 2 − 1, 7 − 3 = 4, 2 × 1, 4 = 0, 0, 4 0 4 − 2 0 1 = 0, 0, 14 !1 − !2 × !3 − !2 = 7 − 3, 6 − 2 × 7 − 3, 1 − 2 = 4, 4 × 4, −1 = 0, 0, 4 0 −1 − 4 0 4 = 0, 0, −20 8 P1 P2 P3 P4 P5 P6 x y P1 1 3 P2 5 5 P3 2 7 P4 3 2 P5 7 6 P6 7 1 P1 P2 P3 P4 P5 P6
l l
l
¡ Zl
¡ Warnockl
¡ Watkinsl
¡ Edwin Catmull 12l
Z
14
1
2
l
¡ • ¡ • ¡ •l
¡ 1516 z A B A B B A A B B A B z
l
¡ Warnock
• Dr. John E. Warnock – 1982 Adobe
l
¡
¡ Watkins
•
l
¡
¡ Edwin Catmull
•
x
y
dbuffer 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9x
z
22 0 9x
z
x
y
dbuffer 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 3 9 9 9 9 9 9 9 9 3 3 9 9 9 9 9 9 3 3 3 3 9 9 9 9 3 3 3 3 3 3 9 9 9 9 9 9 3 3 3 3 9 9 9 9 9 9 9 9 3 3 9 9 9 9 9 9 9 9 9 9 3 9 9 9 9 9 9 9 9 9 9 9 9 23x
z
x
y
dbuffer 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 5 9 9 9 9 5 5 5 5 3 5 9 9 9 9 9 9 5 3 3 5 9 9 9 9 9 3 3 3 3 5 9 9 9 3 3 3 3 3 3 5 9 9 9 9 9 3 3 3 3 5 9 9 9 9 9 9 9 3 3 9 5 9 9 9 9 9 9 9 9 3 9 9 9 9 9 9 9 9 9 9 9 9 24(xl,zl) (xr,zr) y (xl,zl) (xr,zr) (x,z) 25 y x z x z
26 x0 x1 y BEGIN x ← x0 (x, y) x ←x + 1 x < x1 END Y N x←x0 x←x+1 x←x+1 x z
x
z
(1)
BEGIN dx ← x1 – x0 dz ← z1 – z0 1 dz > 0 Y N m ← dz / dx m ← (dz – dx + 1) / dx (x0, z0) (x1, z1) 27 x1 > x0 x1 < x0x
z
(2)
x ← x0 z ← z0 e ← –dx e > 0 Y N z ← z + 1 e ← e – 2dx x ← x + 1 1 3 z ← z + m e ← 2(dz – m dx) 2 2 x < x1 END 3 Y N 28 (x, y)l z (x, y) l dbuffer[y][x] (x, y)