正12面体(实体)建模的几何算法
<P> 由明总和本站几位斑竹合著的《AutoCAD VBA 二次开发教程》一书中,第9章第4节“创建正多面体”的具体算法,因教程的篇幅所限,未能收录到书中,在这里,我把其中较难的“正12面体”分析如下:</P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 150%; mso-char-indent-count: 2.0">对于正<SPAN lang=EN-US>12面体,可先画一正5边形,转为面域,再通过拉伸</SPAN>的方法,创建一个棱台。再用三维镜像(<SPAN lang=EN-US>Mirror3D)的方法生成另一个棱台,接着用旋转(Rotate)、移动(Move)的方法将其调整到一个合适的位置,最后通过交集的方法,使其合二为一。关键之处仍在于如何正确计算拉伸的高度和角度。</SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"><SPAN lang=EN-US><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN> </P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"> 再看看拉伸的高度,<SPAN lang=EN-US>M、N分别是正5边形AEHIJ和ABCDE的中心,分别过M和N作平面AEHIJ和ABCDE的垂线,二者交于O(即正12面体的中心)。K为AE的中点,连结MO、NO、KO、ME和MA。因<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P> 求出了拉伸角和拉伸高度,第一贴中“画棱柱”的工作便能完成,后面的操作就简单了。不论是编程,还是CAD手工操作都可依据这种算法(当然,还有其他算法)。 <P>用ACAD作图法也可以画,不经过计算,就像画足球那样。</P>
<P>先画正五边形,在两邻边上再画同样的正五边形,分别绕公共边旋转,到两正五边形的顶点重合,确定了这个角度,用极阵列画出一层,第二层的第一个正五边形可以设定UCS画,或用ALIGN画,再极阵列,然后是第三层。</P> <P>tqr兄言之有理,我一开始也是这样画的。</P>
<P>这个画法,便于用程序来实现。</P> <p>:)</p><p>ahlzl版主的双棱台交集的方法真妙。</p><p>一直没有机会画这么有趣的几何体,今天做了几个之后,比较感兴趣啊,赶快来看看ahlzl版主的其他题目。</p><p>采用的方法几乎就是tqr老师说的方法了,觉得利用体的交集来求解还是比较有趣的。</p><p> </p> <p>:)</p><p>发现ahlzl版主画了好多厉害的多面体,比如此图,绘制38面体和92面体</p><p><a href="http://www.xdcad.net/forum/showthread.php?s=&threadid=565725">http://www.xdcad.net/forum/showthread.php?s=&threadid=565725</a></p><p>算了好一阵,发现似乎是几何不可解问题,于是编程计算之。得到下图。</p><p>后来继续google,此种几何体原来是叫阿基米德多面体,此处有Mathworld数学百科的链接,居然去到6元或者12元的方程,应该是几何无解吧。</p><p><a href="http://mathworld.wolfram.com/SnubDodecahedron.html">http://mathworld.wolfram.com/SnubDodecahedron.html</a></p><p>算的结果绘图如下。</p><p> </p>
页:
[1]