柏拉图立体顶点与最近面中心的夹角求解(含正十二面体)
Hey there! Let's break this down step by step for you—covering the angle calculation for the dodecahedron, plus formulas/values for all Platonic solids, and a Blender workaround for your modeling needs.
定义说明
We're calculating the angle between two lines: one from a vertex (V) to the center (C) of its adjacent face, and another from that vertex to an adjacent vertex (X) on the same face (i.e., ∠VCX). All calculations below use a unit circumscribed sphere (vertices lie on a sphere of radius R=1) — you can scale these results to match your Blender model's size.
通用计算公式
For any Platonic solid, define:
- ( n ): Number of sides per face (regular n-gon)
- ( m ): Number of edges meeting at each vertex (vertex degree)
- ( a ): Edge length
- ( r_f ): Circumradius of a face (distance from face center to any vertex on the face): ( r_f = \frac{a}{2\sin(\pi/n)} )
- ( d ): 3D distance from vertex to adjacent face center: ( d = \sqrt{R^2 + r_c^2 - 2R r_c \cos\beta} ) (where ( r_c ) is the distance from the solid's center to a face center, and ( \beta ) is the angle between the solid's center to vertex and center to face center vectors)
The final angle ( \theta ) is derived via the law of cosines:
[
\cos\theta = \frac{d^2 + a^2 - r_f^2}{2 \cdot d \cdot a}
]
各柏拉图立体的具体数值与简化公式
1. 正四面体(Tetrahedron)
- Parameters: ( n=3, m=3 )
- Unit sphere values: Edge length ( a \approx 1.633 ), face-to-center distance ( r_c \approx 0.333 )
- Angle ( \theta \approx 70.53^\circ )
- Simplified formula: ( \theta = \arccos\left( \frac{1}{\sqrt{3}} \right) )
2. 正六面体(立方体,Cube)
- Parameters: ( n=4, m=3 )
- Unit sphere values: Edge length ( a \approx 1.155 ), face-to-center distance ( r_c \approx 0.577 )
- Angle ( \theta = 60^\circ )
- Simplified formula: ( \theta = \arccos\left( \frac{1}{2} \right) )
3. 正八面体(Octahedron)
- Parameters: ( n=3, m=4 )
- Unit sphere values: Edge length ( a \approx 1.414 ), face-to-center distance ( r_c \approx 0.817 )
- Angle ( \theta \approx 54.74^\circ )
- Simplified formula: ( \theta = \arccos\left( \frac{\sqrt{2}}{\sqrt{3}} \right) )
4. 正十二面体(Dodecahedron)
- Parameters: ( n=5, m=3 )
- Unit sphere values: Edge length ( a \approx 0.764 ), face-to-center distance ( r_c \approx 0.526 )
- Angle ( \theta \approx 63.43^\circ )
- Simplified formula: ( \theta = \arccos\left( \frac{\sqrt{5}+1}{4} \right) )
5. 正二十面体(Icosahedron)
- Parameters: ( n=3, m=5 )
- Unit sphere values: Edge length ( a \approx 1.052 ), face-to-center distance ( r_c \approx 0.901 )
- Angle ( \theta \approx 37.38^\circ )
- Simplified formula: ( \theta = \arccos\left( \frac{\sqrt{5}+3}{4\sqrt{2}} \right) )
Blender建模正十二面体的小技巧
Since your dihedral angle + parented rotation method worked for the icosahedron, here's a tweak for the dodecahedron:
- Start with a single regular pentagon. Duplicate it, then rotate the copy to match the dodecahedron's dihedral angle (~116.57°) along their shared edge.
- Parent one pentagon to the other's center, then use Blender's Array Modifier combined with a Rotation Constraint to generate the 3 adjacent faces around a single vertex (since each dodecahedron vertex connects 3 edges).
- To align vertices to face centers precisely, use the calculated 63.43° angle: in Edit Mode, select the vertex and face center, use the Measure Tool to verify, or use the Rotate Tool with exact angle input.
内容的提问来源于stack exchange,提问作者CoryG

