WPF-based 3D Sphere mode of realization, the upgrade to achieve the 3D navigation Demo. First pose a demo renderings
Coordinates of all vertices from vertex football. Fully consistent football whole sphere of regular pentagons and regular hexagons makes up the length of each of the seam, it is known to try to determine the coordinates of vertices after 60 radius of the sphere.
Method of seeking solid geometry belong to the category of mathematics, anyway, I find many waste energy when solving entirely artisan spirit support me to solve is complete, we do not do specific details, refer to the following chart:
Source: http://blog.sina.cn/dpool/blog/s/blog_49966d1d0100tc0d.html
After obtaining all the designated coordinates, you can create Viewport3D controls, and creates corresponding objects in ModelVisual3D coordinate position.
I calculated 60-point three-dimensional coordinates:
private List<Point3D> GetBuckyBallPoints() { List<Point3D> ltPoints = new List<Point3D>(); ltPoints.Add(new Point3D(.850651, 0, 2.327438)); ltPoints.Add(new Point3D(.262866, .809017, 2.327438)); ltPoints.Add(new Point3D(-.688191, .5, 2.327438)); ltPoints.Add(new Point3D(-.688191, -.5, 2.327438)); ltPoints.Add(new Point3D(.262866, -.809017, 2.327438)); ltPoints.Add(new Point3D(1.701301, 0, 1.801708)); ltPoints.Add(new Point3D(.52573, 1.618035, 1.801708)); ltPoints.Add(new Point3D(.52573, -1.618035, 1.801708)); ltPoints.Add(new Point3D(-1.376383, -.999999, 1.801708)); ltPoints.Add(new Point3D(-1.376383, .999999, 1.801708)); ltPoints.Add(new Point3D(1.964166, .809017, 1.275977)); ltPoints.Add(new Point3D(1.376381, 1.618035, 1.275977)); ltPoints.Add(new Point3D(-.162461, 2.118035, 1.275977)); ltPoints.Add(new Point3D(-1.113517, 1.809017, 1.275977)); ltPoints.Add(new Point3D(-2.064574, .5, 1.275977)); ltPoints.Add(new Point3D(-2.064574, -.5, 1.275977)); ltPoints.Add(new Point3D(-1.113517, -1.809017, 1.275977)); ltPoints.Add(new Point3D(-.162461, -2.118035, 1.275977)); ltPoints.Add(new Point3D(1.376381, -1.618035, 1.275977)); ltPoints.Add(new Point3D(1.964166, -.809017, 1.275977)); ltPoints.Add(new Point3D(2.389492, .5, .425326)); ltPoints.Add(new Point3D(1.213921, 2.118035, .425326)); ltPoints.Add(new Point3D(.262865, 2.427051, .425326)); ltPoints.Add(new Point3D(-1.639248, 1.809017, .425326)); ltPoints.Add(new Point3D(-2.227033, .999999, .425326)); ltPoints.Add(new Point3D(-2.227033, -.999999, .425326)); ltPoints.Add(new Point3D(-1.639248, -1.809017, .425326)); ltPoints.Add(new Point3D(.262865, -2.427051, .425326)); ltPoints.Add(new Point3D(1.213921, -2.118035, .425326)); ltPoints.Add(new Point3D(2.389492, -.5, .425326)); ltPoints.Add(new Point3D(2.227033, .999999, -.425326)); ltPoints.Add(new Point3D(1.639248, 1.809017, -.425326)); ltPoints.Add(new Point3D(-.262865, 2.427051, -.425326)); ltPoints.Add(new Point3D(-1.213921, 2.118035, -.425326)); ltPoints.Add(new Point3D(-2.389492, .5, -.425326)); ltPoints.Add(new Point3D(-2.389492, -.5, -.425326)); ltPoints.Add(new Point3D(-1.213921, -2.118035, -.425326)); ltPoints.Add(new Point3D(-.262865, -2.427051, -.425326)); ltPoints.Add(new Point3D(1.639248, -1.809017, -.425326)); ltPoints.Add(new Point3D(2.227033, -.999999, -.425326)); ltPoints.Add(new Point3D(2.064574, .5, -1.275977)); ltPoints.Add(new Point3D(1.113517, 1.809017, -1.275977)); ltPoints.Add(new Point3D(.162461, 2.118035, -1.275977)); ltPoints.Add(new Point3D(-1.376381, 1.618035, -1.275977)); ltPoints.Add(new Point3D(-1.964166, .809017, -1.275977)); ltPoints.Add(new Point3D(-1.964166, -.809017, -1.275977)); ltPoints.Add(new Point3D(-1.376381, -1.618035, -1.275977)); ltPoints.Add(new Point3D(.162461, -2.118035, -1.275977)); ltPoints.Add(new Point3D(1.113517, -1.809017, -1.275977)); ltPoints.Add(new Point3D(2.064574, -.5, -1.275977)); ltPoints.Add(new Point3D(1.376383, .999999, -1.801708)); ltPoints.Add(new Point3D(-.52573, 1.618035, -1.801708)); ltPoints.Add(new Point3D(-1.701301, 0, -1.801708)); ltPoints.Add(new Point3D(-.52573, -1.618035, -1.801708)); ltPoints.Add(new Point3D(1.376383, -.999999, -1.801708)); ltPoints.Add(new Point3D(.688191, .5, -2.327438)); ltPoints.Add(new Point3D(-.262866, .809017, -2.327438)); ltPoints.Add(new Point3D(-.850651, 0, -2.327438)); ltPoints.Add(new Point3D(-.262866, -.809017, -2.327438)); ltPoints.Add(new Point3D(.688191, -.5, -2.327438)); return ltPoints; }
Renderings realized
Tools: Visual Studio 2017
Project: WPF C #
Source Downloads: