正四面体の作り方

三角形面の法線ベクトルを求める
𝑦
𝑂 は外接球の中心
𝑂𝐴 = 𝑂𝐵 = 𝑟0
𝑂
𝐴
𝐻𝐵 = 𝑟1
𝑧
𝑂𝐻 = ℎ
𝐴𝐵 = 𝐵𝐶 = 𝑠
𝑟0
𝑟0
𝑂
8,9
5
𝐷
ℎ
𝑟02 = 𝑟12 + ℎ2
𝑃0 𝑥0 , 𝑦0 , 𝑧0
𝑢𝑦 𝑣𝑧 − 𝑢𝑧 𝑣𝑦
𝑵 = 𝑼 × 𝑽 = 𝑢𝑧 𝑣𝑥 − 𝑢𝑥 𝑣𝑧
𝑢𝑥 𝑣𝑦 − 𝑢𝑦 𝑣𝑥
7
𝒏=
𝑵
𝑵
正規化
(大きさを1にする)
(三角形HBCで,Hは正三角形BCDの外接円の中心)
(三角形OBHで)
𝑠 2 = 𝑟12 + ℎ + 𝑟0
2 2
𝑟1 =
𝑟
3 0
2,3
𝑥2 − 𝑥0
𝑣𝑥
𝑽 = 𝑦2 − 𝑦0 = 𝑣𝑦
𝑧2 − 𝑧0
𝑣𝑧
𝑃1 𝑥1 , 𝑦1 , 𝑧1
CCWで番号をつける
10
1,4
𝐶
𝑠 = 3𝑟1
𝒏 法線ベクトル
𝑃2 𝑥2 , 𝑦2 , 𝑧2
𝑟1 H
𝐵
𝑥
𝒏を「𝑃0 , 𝑃1 , 𝑃2 の法線ベクトル」とする
0,6
11
𝑥1 − 𝑥0
𝑢𝑥
𝑼 = 𝑦1 − 𝑦0 = 𝑢𝑦
𝑧1 − 𝑧0
𝑢𝑧
2
(三角形ABHで)
1
ℎ = 𝑟0
3
𝐴: 0, 𝑟0 , 0
𝐵: 0, −ℎ, 𝑟1
頂点の座標
点番号
座標
各面の法線ベクトル
各面の法線ベクトルはその
面を構成する頂点の
法線ベクトルとして指定する
ことになっている
点番号
(面を構成
する点番
号)
点における
法線ベクトル
(=面の法線ベクトル)
描かれる三角形
(CW:時計回り,CCW:反時計回り)
点番号
三角形
0,1,2
CCW
3,4,5
CCW
ABC の法線ベクトル
6,7,8
CCW
3,4,5
CBD の法線ベクトル
9,10,11
CCW
6,7,8
ACDの法線ベクトル
9,10,11
DBA の法線ベクトル
0,6,11
A
2
2
𝐶: 𝑟1 𝑠𝑖𝑛 𝜋, −ℎ, 𝑟1 𝑐𝑜𝑠 𝜋
3
3
1,4,10
B
0,1,2
4
4
𝐷: 𝑟1 𝑠𝑖𝑛 𝜋, −ℎ, 𝑟1 𝑐𝑜𝑠 𝜋
3
3
2,3,7
C
5,8,9
D
GLES20.glDrawElements(GLES20.GL_TRIANGLES,
numIndexs, GLES20.GL_UNSIGNED_BYTE, indexBuffer);
正四面体の描き方 個々の三角形を連続して描く