2.3 正多面体
著者:梅谷 武
語句:正四面体と立方体の対称変換群、正八面体と立方体、正十二面体と正二十面体の双対性を視覚的に示す。
対称変換群, 対称群, 正四面体, 立方体, 正八面体, 正十二面体, 正二十面体
作成:2010-09-30
更新:2011-03-08
 正多面体の対称変換群たいしょうへんかんぐん, symmetry transformation groupは直交群の有限部分群であり、対称群たいしょうぐん, symmetric groupに埋め込むことができる。ここでは五種類の正多面体の内、正四面体と立方体の対称変換群の構造とともに、正八面体と立方体、正十二面体と正二十面体の双対性を視覚的に示す。
正四面体せいしめんたい, regular tetrahedronの対称変換で回転で表現できるものは、重心と頂点を結ぶ4本の軸に関する回転と二組の頂点対に関する互換の積であり、位数12の群を成し、交代群A4と同型になる。そのすべてを図示する。

sample214.lua

package.path = "std/?.lua"
require( "Geometry" )
 
a = math.sqrt( 6.0 ) / 2.0
b = math.sqrt( 3.0 ) / 3.0
c = math.sqrt( 6.0 ) / 6.0
d = 2.0 * b
vertices = {
0.0,  a, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0,
-1.0, -c,  -b, 0.0, 1.0, 0.0, 0.0, 0.0,
1.0, -c,  -b, 0.0, 1.0, 0.0, 0.0, 0.0,
0.0, -c,   d, 0.0, 1.0, 0.0, 0.0, 0.0
}
function tetrahedron()
dxSetRenderState( D3DRS_CULLMODE, D3DCULL_NONE )
dxSetColorHSV(   0.0, 1.0, 1.0 )
dxTriangleMesh( 4, vertices, 1, { 0, 1, 2 } )
dxSetColorHSV(  90.0, 1.0, 1.0 )
dxTriangleMesh( 4, vertices, 1, { 0, 2, 3 } )
dxSetColorHSV( 180.0, 1.0, 1.0 )
dxTriangleMesh( 4, vertices, 1, { 0, 3, 1 } )
dxSetColorHSV( 270.0, 1.0, 1.0 )
dxTriangleMesh( 4, vertices, 1, { 1, 3, 2 } )
dxPrint( 0.0+0.1,  a+0.1, 0.0+0.1, 1.0, 1.0, 1.0, "1" )
dxPrint(-1.0-0.1, -c-0.1,  -b-0.1, 1.0, 1.0, 1.0, "2" )
dxPrint( 1.0+0.1, -c-0.1,  -b-0.1, 1.0, 1.0, 1.0, "3" )
dxPrint( 0.0+0.1, -c-0.1,   d+0.1, 1.0, 1.0, 1.0, "4" )
dxSetRenderState( D3DRS_CULLMODE, D3DCULL_CCW )
end
Tetrahedron = Figure.new( function()
tetrahedron()
end )
E = Transformation.new( function()
end )
R1 = Transformation.new( function()
Rotate( 120.0, 0.0, 0.0, 1.0 )
end )
R2 = Transformation.new( function()
Rotate( 120.0, -1.0, -b, -c )
end )
R3 = Transformation.new( function()
Rotate( 120.0,  1.0, -b, -c )
end )
R4 = Transformation.new( function()
Rotate( 120.0,  0.0,  d, -c )
end )
T1 = Transformation.new( function()
Translate( 3.0, 0.0, 0.0 )
end )
T2 = Transformation.new( function()
Translate( 0.0,-3.0, 0.0 )
end )
 
draw =                           E * Tetrahedron
draw =                 ( T1 * R1 ) * Tetrahedron
draw =             ( T1^2 * R1^2 ) * Tetrahedron
draw =            ( T1 * T2 * R2 ) * Tetrahedron
draw =        ( T1^2 * T2 * R2^2 ) * Tetrahedron
draw =          ( T1 * T2^2 * R3 ) * Tetrahedron
draw =      ( T1^2 * T2^2 * R3^2 ) * Tetrahedron
draw =          ( T1 * T2^3 * R4 ) * Tetrahedron
draw =      ( T1^2 * T2^3 * R4^2 ) * Tetrahedron
draw =        ( T1^4 * R2^2 * R1 ) * Tetrahedron
draw =   ( T1^4 * T2 * R4^2 * R2 ) * Tetrahedron
draw = ( T1^4 * T2^2 * R2^2 * R3 ) * Tetrahedron
 
tnNewObject()
sample214.lua
立方体りっぽうたい, cubeの対称変換で回転で表現できるものは、4本の対角線の置換として表現することができ、そのすべての組み合わせに対応する回転が存在することから、対称群S4に同型であることがわかる。そのすべてを図示する。

sample215a.lua

package.path = "std/?.lua"
require( "Geometry" )
 
a = math.sqrt( 3.0 ) / 3.0
vertices = {
-a,  -a,  -a,  -a,  -a,  -a, 0.0, 0.0,
-a,  -a,   a,  -a,  -a,   a, 0.0, 0.0,
a,  -a,   a,   a,  -a,   a, 0.0, 0.0,
a,  -a,  -a,   a,  -a,  -a, 0.0, 0.0,
-a,   a,  -a,  -a,   a,  -a, 0.0, 0.0,
-a,   a,   a,  -a,   a,   a, 0.0, 0.0,
a,   a,   a,   a,   a,   a, 0.0, 0.0,
a,   a,  -a,   a,   a,  -a, 0.0, 0.0
}
function cube()
dxSetRenderState( D3DRS_CULLMODE, D3DCULL_NONE )
dxSetColorHSV(   0.0, 1.0, 1.0 )
dxTriangleMesh( 8, vertices, 2, { 0, 1, 2, 0, 2, 3 } )
dxSetColorHSV(  60.0, 1.0, 1.0 )
dxTriangleMesh( 8, vertices, 2, { 1, 5, 6, 1, 6, 2 } )
dxSetColorHSV( 120.0, 1.0, 1.0 )
dxTriangleMesh( 8, vertices, 2, { 5, 4, 7, 5, 7, 6 } )
dxSetColorHSV( 180.0, 1.0, 1.0 )
dxTriangleMesh( 8, vertices, 2, { 4, 0, 3, 4, 3, 7 } )
dxSetColorHSV( 240.0, 1.0, 1.0 )
dxTriangleMesh( 8, vertices, 2, { 0, 4, 5, 0, 5, 1 } )
dxSetColorHSV( 300.0, 1.0, 1.0 )
dxTriangleMesh( 8, vertices, 2, { 2, 6, 7, 2, 7, 3 } )
dxPrint( -a-0.1, -a-0.1, -a-0.1, 1.0, 1.0, 1.0, "1" )
dxPrint( -a-0.1, -a-0.1,  a+0.1, 1.0, 1.0, 1.0, "2" )
dxPrint(  a+0.1, -a-0.1,  a+0.1, 1.0, 1.0, 1.0, "3" )
dxPrint(  a+0.1, -a-0.1, -a-0.1, 1.0, 1.0, 1.0, "4" )
dxPrint( -a-0.1,  a+0.1, -a-0.1, 1.0, 1.0, 1.0, "5" )
dxPrint( -a-0.1,  a+0.1,  a+0.1, 1.0, 1.0, 1.0, "6" )
dxPrint(  a+0.1,  a+0.1,  a+0.1, 1.0, 1.0, 1.0, "7" )
dxPrint(  a+0.1,  a+0.1, -a-0.1, 1.0, 1.0, 1.0, "8" )
dxSetRenderState( D3DRS_CULLMODE, D3DCULL_CCW )
end
Cube = Figure.new( function()
cube()
end )
E = Transformation.new( function()
end )
R1 = Transformation.new( function()
Rotate( 90.0, 1.0, 0.0, 0.0 )
end )
R2 = Transformation.new( function()
Rotate( 90.0, 0.0, 1.0, 0.0 )
end )
R3 = Transformation.new( function()
Rotate( 90.0, 0.0, 0.0, 1.0 )
end )
T1 = Transformation.new( function()
Translate( 2.0,-2.0, 0.0 )
end )
T2 = Transformation.new( function()
Translate(-2.0,-2.0, 0.0 )
end )
 
draw =                      E * Cube
draw =            ( T1 * R1 ) * Cube
draw =        ( T1^2 * R1^2 ) * Cube
draw =        ( T1^3 * R1^3 ) * Cube
draw =       ( T1 * T2 * R2 ) * Cube
draw =   ( T1^2 * T2 * R2^2 ) * Cube
draw =   ( T1^3 * T2 * R2^3 ) * Cube
draw =     ( T1 * T2^2 * R3 ) * Cube
draw = ( T1^2 * T2^2 * R3^2 ) * Cube
draw = ( T1^3 * T2^2 * R3^3 ) * Cube
 
tnNewObject()
sample215a.lua

sample215b.lua

package.path = "std/?.lua"
require( "Geometry" )
 
a = math.sqrt( 3.0 ) / 3.0
vertices = {
-a,  -a,  -a,  -a,  -a,  -a, 0.0, 0.0,
-a,  -a,   a,  -a,  -a,   a, 0.0, 0.0,
a,  -a,   a,   a,  -a,   a, 0.0, 0.0,
a,  -a,  -a,   a,  -a,  -a, 0.0, 0.0,
-a,   a,  -a,  -a,   a,  -a, 0.0, 0.0,
-a,   a,   a,  -a,   a,   a, 0.0, 0.0,
a,   a,   a,   a,   a,   a, 0.0, 0.0,
a,   a,  -a,   a,   a,  -a, 0.0, 0.0
}
function cube()
dxSetRenderState( D3DRS_CULLMODE, D3DCULL_NONE )
dxSetColorHSV(   0.0, 1.0, 1.0 )
dxTriangleMesh( 8, vertices, 2, { 0, 1, 2, 0, 2, 3 } )
dxSetColorHSV(  60.0, 1.0, 1.0 )
dxTriangleMesh( 8, vertices, 2, { 1, 5, 6, 1, 6, 2 } )
dxSetColorHSV( 120.0, 1.0, 1.0 )
dxTriangleMesh( 8, vertices, 2, { 5, 4, 7, 5, 7, 6 } )
dxSetColorHSV( 180.0, 1.0, 1.0 )
dxTriangleMesh( 8, vertices, 2, { 4, 0, 3, 4, 3, 7 } )
dxSetColorHSV( 240.0, 1.0, 1.0 )
dxTriangleMesh( 8, vertices, 2, { 0, 4, 5, 0, 5, 1 } )
dxSetColorHSV( 300.0, 1.0, 1.0 )
dxTriangleMesh( 8, vertices, 2, { 2, 6, 7, 2, 7, 3 } )
dxPrint( -a-0.1, -a-0.1, -a-0.1, 1.0, 1.0, 1.0, "1" )
dxPrint( -a-0.1, -a-0.1,  a+0.1, 1.0, 1.0, 1.0, "2" )
dxPrint(  a+0.1, -a-0.1,  a+0.1, 1.0, 1.0, 1.0, "3" )
dxPrint(  a+0.1, -a-0.1, -a-0.1, 1.0, 1.0, 1.0, "4" )
dxPrint( -a-0.1,  a+0.1, -a-0.1, 1.0, 1.0, 1.0, "5" )
dxPrint( -a-0.1,  a+0.1,  a+0.1, 1.0, 1.0, 1.0, "6" )
dxPrint(  a+0.1,  a+0.1,  a+0.1, 1.0, 1.0, 1.0, "7" )
dxPrint(  a+0.1,  a+0.1, -a-0.1, 1.0, 1.0, 1.0, "8" )
dxSetRenderState( D3DRS_CULLMODE, D3DCULL_CCW )
end
Cube = Figure.new( function()
cube()
end )
E = Transformation.new( function()
end )
R4 = Transformation.new( function()
Rotate( 120.0, a, a, a )
end )
R5 = Transformation.new( function()
Rotate( 120.0, a,-a, a )
end )
R6 = Transformation.new( function()
Rotate( 120.0,-a,-a, a )
end )
R7 = Transformation.new( function()
Rotate( 120.0,-a, a, a )
end )
T1 = Transformation.new( function()
Translate( 2.0,-2.0, 0.0 )
end )
T2 = Transformation.new( function()
Translate(-2.0,-2.0, 0.0 )
end )
 
draw =                      E * Cube
draw =            ( T1 * R4 ) * Cube
draw =        ( T1^2 * R4^2 ) * Cube
draw =       ( T1 * T2 * R5 ) * Cube
draw =   ( T1^2 * T2 * R5^2 ) * Cube
draw =     ( T1 * T2^2 * R6 ) * Cube
draw = ( T1^2 * T2^2 * R6^2 ) * Cube
draw =     ( T1 * T2^3 * R7 ) * Cube
draw = ( T1^2 * T2^3 * R7^2 ) * Cube
 
tnNewObject()
sample215b.lua

sample215c.lua

package.path = "std/?.lua"
require( "Geometry" )
 
a = math.sqrt( 3.0 ) / 3.0
vertices = {
-a,  -a,  -a,  -a,  -a,  -a, 0.0, 0.0,
-a,  -a,   a,  -a,  -a,   a, 0.0, 0.0,
a,  -a,   a,   a,  -a,   a, 0.0, 0.0,
a,  -a,  -a,   a,  -a,  -a, 0.0, 0.0,
-a,   a,  -a,  -a,   a,  -a, 0.0, 0.0,
-a,   a,   a,  -a,   a,   a, 0.0, 0.0,
a,   a,   a,   a,   a,   a, 0.0, 0.0,
a,   a,  -a,   a,   a,  -a, 0.0, 0.0
}
function cube()
dxSetRenderState( D3DRS_CULLMODE, D3DCULL_NONE )
dxSetColorHSV(   0.0, 1.0, 1.0 )
dxTriangleMesh( 8, vertices, 2, { 0, 1, 2, 0, 2, 3 } )
dxSetColorHSV(  60.0, 1.0, 1.0 )
dxTriangleMesh( 8, vertices, 2, { 1, 5, 6, 1, 6, 2 } )
dxSetColorHSV( 120.0, 1.0, 1.0 )
dxTriangleMesh( 8, vertices, 2, { 5, 4, 7, 5, 7, 6 } )
dxSetColorHSV( 180.0, 1.0, 1.0 )
dxTriangleMesh( 8, vertices, 2, { 4, 0, 3, 4, 3, 7 } )
dxSetColorHSV( 240.0, 1.0, 1.0 )
dxTriangleMesh( 8, vertices, 2, { 0, 4, 5, 0, 5, 1 } )
dxSetColorHSV( 300.0, 1.0, 1.0 )
dxTriangleMesh( 8, vertices, 2, { 2, 6, 7, 2, 7, 3 } )
dxPrint( -a-0.1, -a-0.1, -a-0.1, 1.0, 1.0, 1.0, "1" )
dxPrint( -a-0.1, -a-0.1,  a+0.1, 1.0, 1.0, 1.0, "2" )
dxPrint(  a+0.1, -a-0.1,  a+0.1, 1.0, 1.0, 1.0, "3" )
dxPrint(  a+0.1, -a-0.1, -a-0.1, 1.0, 1.0, 1.0, "4" )
dxPrint( -a-0.1,  a+0.1, -a-0.1, 1.0, 1.0, 1.0, "5" )
dxPrint( -a-0.1,  a+0.1,  a+0.1, 1.0, 1.0, 1.0, "6" )
dxPrint(  a+0.1,  a+0.1,  a+0.1, 1.0, 1.0, 1.0, "7" )
dxPrint(  a+0.1,  a+0.1, -a-0.1, 1.0, 1.0, 1.0, "8" )
dxSetRenderState( D3DRS_CULLMODE, D3DCULL_CCW )
end
Cube = Figure.new( function()
cube()
end )
E = Transformation.new( function()
end )
R8 = Transformation.new( function()
Rotate( 180.0, a, 0.0, a )
end )
R9 = Transformation.new( function()
Rotate( 180.0, 0.0, a, a )
end )
Ra = Transformation.new( function()
Rotate( 180.0,-a, 0.0, a )
end )
Rb = Transformation.new( function()
Rotate( 180.0, 0.0,-a, a )
end )
Rc = Transformation.new( function()
Rotate( 180.0, a, a, 0.0 )
end )
Rd = Transformation.new( function()
Rotate( 180.0,-a, a, 0.0 )
end )
T1 = Transformation.new( function()
Translate( 2.0,-2.0, 0.0 )
end )
T2 = Transformation.new( function()
Translate(-2.0,-2.0, 0.0 )
end )
 
draw =                  E * Cube
draw =        ( T1 * R8 ) * Cube
draw =      ( T1^2 * R9 ) * Cube
draw =      ( T1^3 * Ra ) * Cube
draw =      ( T1^4 * Rb ) * Cube
draw =   ( T1 * T2 * Rc ) * Cube
draw = ( T1^2 * T2 * Rd ) * Cube
 
tnNewObject()
sample215c.lua
正八面体せいはちめんたい, regular octahedronを立方体に内接させると、正八面体の頂点と立方体の面、正八面体の面と立方体の頂点が1対1に対応する。この性質から、正八面体と立方体の対称変換群は同じものであることがわかる。

sample216.lua

package.path = "std/?.lua"
require( "Geometry" )
 
a = math.sqrt( 3.0 ) / 3.0
vertices = {
-a,  -a,  -a,  -a,  -a,  -a, 0.0, 0.0,
-a,  -a,   a,  -a,  -a,   a, 0.0, 0.0,
a,  -a,   a,   a,  -a,   a, 0.0, 0.0,
a,  -a,  -a,   a,  -a,  -a, 0.0, 0.0,
-a,   a,  -a,  -a,   a,  -a, 0.0, 0.0,
-a,   a,   a,  -a,   a,   a, 0.0, 0.0,
a,   a,   a,   a,   a,   a, 0.0, 0.0,
a,   a,  -a,   a,   a,  -a, 0.0, 0.0,
0.0,   a, 0.0, 0.0,   a, 0.0, 0.0, 0.0,
a, 0.0, 0.0,   a, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0,   a, 0.0, 0.0,   a, 0.0, 0.0,
-a, 0.0, 0.0,  -a, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0,  -a, 0.0, 0.0,  -a, 0.0, 0.0,
0.0,  -a, 0.0, 0.0,  -a, 0.0, 0.0, 0.0
}
function cube()
dxSetRenderState( D3DRS_CULLMODE, D3DCULL_NONE )
dxTriangleMesh( 14, vertices, 12, {
0, 1, 2, 0, 2, 3,
1, 5, 6, 1, 6, 2,
5, 4, 7, 5, 7, 6,
4, 0, 3, 4, 3, 7,
0, 4, 5, 0, 5, 1,
2, 6, 7, 2, 7, 3
} )
dxSetRenderState( D3DRS_CULLMODE, D3DCULL_CCW )
end
material_cube = {
0.4, 0.4, 0.4, 0.1,
1.0, 1.0, 1.0, 0.1,
0.0, 0.0, 0.0, 0.1,
0.001, 0.001, 0.001, 1.0,
16.0
}
function octahedron()
dxSetRenderState( D3DRS_CULLMODE, D3DCULL_NONE )
dxTriangleMesh( 14, vertices, 8, {
8,  9, 10,
8, 10, 11,
8, 11, 12,
8, 12,  9,
13,  9, 10,
13, 10, 11,
13, 11, 12,
13, 12,  9
} )
dxSetRenderState( D3DRS_CULLMODE, D3DCULL_CCW )
end
material_octahedron = {
0.0, 0.0, 0.0, 0.8,
1.0, 0.0, 0.0, 0.8,
0.0, 0.0, 0.0, 0.8,
0.001, 0.001, 0.001, 1.0,
16.0
}
 
dxSetRenderState( D3DRS_ALPHABLENDENABLE, 1 )
dxSetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA )
dxSetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA )
dxSetRenderState( D3DRS_FILLMODE, D3DFILL_SOLID )
SetMaterial( material_octahedron )
octahedron()
dxSetRenderState( D3DRS_FILLMODE, D3DFILL_WIREFRAME )
dxSetColor( 1.0, 0.0, 0.0 )
octahedron()
dxSetRenderState( D3DRS_FILLMODE, D3DFILL_SOLID )
SetMaterial( material_cube )
cube()
dxSetRenderState( D3DRS_FILLMODE, D3DFILL_WIREFRAME )
dxSetColor( 0.4, 0.4, 0.4 )
cube()
dxSetRenderState( D3DRS_FILLMODE, D3DFILL_SOLID )
dxSetRenderState( D3DRS_ALPHABLENDENABLE, 0 )
 
tnNewObject( "a001" )
Traj = {}
for i = 1, 72, 1 do
table.insert( Traj, 0.0 )
table.insert( Traj, 0.0 )
table.insert( Traj, 0.0 )
table.insert( Traj, -(i-1)*5.0 )
table.insert( Traj, 0.0 )
table.insert( Traj, 0.0 )
table.insert( Traj, (i-1)*100.0 )
end
tnSetTrajectory( "a001", 72, Traj )

sample216.lua

package.path = "std/?.lua"
require("Geometry")
 
x = 0.525731112119133606
z = 0.850650808352039932
icosa = {
-x,   z, 0.0,
x,   z, 0.0,
-x,  -z, 0.0,
x,  -z, 0.0,
0.0,   x,   z,
0.0,  -x,   z,
0.0,   x,  -z,
0.0,  -x,  -z,
z, 0.0,   x,
-z, 0.0,   x,
z, 0.0,  -x,
-z, 0.0,  -x
}
v_icosa = {}
for i = 1, 36, 3 do
table.insert( v_icosa, icosa[i] )
table.insert( v_icosa, icosa[i+1] )
table.insert( v_icosa, icosa[i+2] )
table.insert( v_icosa, icosa[i] )
table.insert( v_icosa, icosa[i+1] )
table.insert( v_icosa, icosa[i+2] )
table.insert( v_icosa, 0.0 )
table.insert( v_icosa, 0.0 )
end
function icosahedron()
dxSetRenderState( D3DRS_CULLMODE, D3DCULL_NONE )
dxTriangleMesh( 12, v_icosa, 20, {
1, 4, 0,
4, 9, 0,
4, 5, 9,
8, 5, 4,
1, 8, 4,
1,10, 8,
10, 3, 8,
8, 3, 5,
3, 2, 5,
3, 7, 2,
3,10, 7,
10, 6, 7,
6,11, 7,
6, 0,11,
6, 1, 0,
10, 1, 6,
11, 0, 9,
2,11, 9,
5, 2, 9,
11, 2, 7
} )
dxSetRenderState( D3DRS_CULLMODE, D3DCULL_CCW )
end
material_icosa = {
0.4, 0.4, 0.4, 0.1,
1.0, 1.0, 1.0, 0.1,
0.0, 0.0, 0.0, 0.1,
0.001, 0.001, 0.001, 1.0,
16.0
}
dodeca = {}
function calc( i, a, b, c )
dodeca[3*i+1] = (icosa[3*a+1]+icosa[3*b+1]+icosa[3*c+1])/3.0
dodeca[3*i+2] = (icosa[3*a+2]+icosa[3*b+2]+icosa[3*c+2])/3.0
dodeca[3*i+3] = (icosa[3*a+3]+icosa[3*b+3]+icosa[3*c+3])/3.0
end
calc(  0,  1,  4,  0 )
calc(  1,  1,  8,  4 )
calc(  2,  8,  5,  4 )
calc(  3,  5,  9,  4 )
calc(  4,  4,  9,  0 )
calc(  5,  1, 10,  8 )
calc(  6, 10,  3,  8 )
calc(  7,  8,  3,  5 )
calc(  8,  3,  2,  5 )
calc(  9,  5,  2,  9 )
calc( 10, 10,  6,  7 )
calc( 11,  2, 11,  9 )
calc( 12, 11,  0,  9 )
calc( 13,  6,  0, 11 )
calc( 14,  6,  1,  0 )
calc( 15, 10,  1,  6 )
calc( 16,  3,  7,  2 )
calc( 17, 11,  2,  7 )
calc( 18,  3, 10,  7 )
calc( 19,  6, 11,  7 )
v_dodeca = {}
for i = 1, 60, 3 do
table.insert( v_dodeca, dodeca[i] )
table.insert( v_dodeca, dodeca[i+1] )
table.insert( v_dodeca, dodeca[i+2] )
table.insert( v_dodeca, dodeca[i] )
table.insert( v_dodeca, dodeca[i+1] )
table.insert( v_dodeca, dodeca[i+2] )
table.insert( v_dodeca, 0.0 )
table.insert( v_dodeca, 0.0 )
end
function dodecahedron()
dxSetRenderState( D3DRS_CULLMODE, D3DCULL_NONE )
dxTriangleMesh( 20, v_dodeca, 3, { 0, 1, 2, 0, 2, 3, 0, 3, 4 } )
dxTriangleMesh( 20, v_dodeca, 3, { 5, 6, 7, 5, 7, 2, 5, 2, 1 } )
dxTriangleMesh( 20, v_dodeca, 3, { 2, 7, 8, 2, 8, 9, 2, 9, 3 } )
dxTriangleMesh( 20, v_dodeca, 3, { 9, 8,16, 9,16,17, 9,17,11 } )
dxTriangleMesh( 20, v_dodeca, 3, { 4, 3, 9, 4, 9,11, 4,11,12 } )
dxTriangleMesh( 20, v_dodeca, 3, { 0, 4,12, 0,12,13, 0,13,14 } )
dxTriangleMesh( 20, v_dodeca, 3, {15, 5, 1,15, 1, 0,15, 0,14 } )
dxTriangleMesh( 20, v_dodeca, 3, {18,16, 8,18, 8, 7,18, 7, 6 } )
dxTriangleMesh( 20, v_dodeca, 3, {13,19,10,13,10,15,13,15,14 } )
dxTriangleMesh( 20, v_dodeca, 3, {19,17,16,19,16,18,19,18,10 } )
dxTriangleMesh( 20, v_dodeca, 3, {15,10,18,15,18, 6,15, 6, 5 } )
dxTriangleMesh( 20, v_dodeca, 3, {12,11,17,12,17,19,12,19,13 } )
dxSetRenderState( D3DRS_CULLMODE, D3DCULL_CCW )
end
material_dodeca = {
0.0, 0.0, 0.0, 0.8,
1.0, 0.0, 0.0, 0.8,
0.0, 0.0, 0.0, 0.8,
0.001, 0.001, 0.001, 1.0,
16.0
}
 
dxSetRenderState( D3DRS_ALPHABLENDENABLE, 1 )
dxSetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA )
dxSetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA )
dxSetRenderState( D3DRS_FILLMODE, D3DFILL_SOLID )
SetMaterial( material_dodeca )
dodecahedron()
dxSetRenderState( D3DRS_FILLMODE, D3DFILL_WIREFRAME )
dxSetColor( 1.0, 0.0, 0.0, 0.8 )
dodecahedron()
dxSetRenderState( D3DRS_FILLMODE, D3DFILL_SOLID )
SetMaterial( material_icosa )
icosahedron()
dxSetRenderState( D3DRS_FILLMODE, D3DFILL_WIREFRAME )
dxSetColor( 0.4, 0.4, 0.4 )
icosahedron()
dxSetRenderState( D3DRS_FILLMODE, D3DFILL_SOLID )
dxSetRenderState( D3DRS_ALPHABLENDENABLE, 0 )
 
tnNewObject( "b001" )
Traj = {}
for i = 1, 72, 1 do
table.insert( Traj, 0.0 )
table.insert( Traj, 0.0 )
table.insert( Traj, 0.0 )
table.insert( Traj, -(i-1)*5.0 )
table.insert( Traj, 0.0 )
table.insert( Traj, 0.0 )
table.insert( Traj, (i-1)*100.0 )
end
tnSetTrajectory( "b001", 72, Traj )
語  句
対称変換群 たいしょうへんかんぐん, symmetry transformation group
対称群 たいしょうぐん, symmetric group
正四面体 せいしめんたい, regular tetrahedron
立方体 りっぽうたい, cube
正八面体 せいはちめんたい, regular octahedron
正十二面体 せいじゅうにめんたい, regular dodecahedron
正二十面体 せいにじゅうめんたい, regular icosahedron
 
Published by SANENSYA Co.,Ltd.