如何在二十面体上使三角形侧面积增加和减少,而形状却不保持“完整”
How do I make the triangular side areas increase and decrease on an icosahedron without the shape remaining "intact"?
我将如何使二十面体旋转以及三角形边的面积增加,如此处的视频所示:单击此处。
下面是一个使用 THREE 的 JavaScript 代码
.js三。二十面体几何 = 函数 ( 半径, 细节 ( {
var t = ( 1 + Math.sqrt( 5 ( (/2;
变量顶点 = [ - 1, t, 0, 1, t, 0, - 1, - t, 0, 1, - t, 0, 0, - 1, t, 0, 1, t, 0, - 1, - t, 0, 1, - t, t, 0, - 1, t, 0
, 1, - t, 0, - 1, - t, 0, 1 ]; VaR 指数 = [ 0, 11, 5, 0, 5, 1, 0, 1, 7,0, 7, 10, 0, 10, 11, 1, 5, 9, 5, 11, 4, 11, 10, 2, 10, 7, 6, 7, 1, 8, 3, 9, 4, 3, 4, 2, 3, 2, 6, 3, 6, 8, 3, 8, 9, 4, 9, 5, 2, 4, 11, 6, 2, 10, 8, 6, 7, 9, 8, 1 ];
三。PolyhedronGeometry.call( this, 顶点, 索引, radius, 细节 (;
this.type = '二十面体几何';
this.parameters = { radius: radius, detail: detail }; };
三。二十面体几何原型 = 对象.创建( 三。几何原型 (;
这是蒂莫西普拉特利/https://github.com/timothypratley
为了在位置上放大和缩小,每个三角形都需要以零为中心的点来构造。为了将三角形居中为零,我们找到 3 个顶点的中点,并从每个点中减去该中点。现在,可以在不离开原点的情况下缩放三角形。
然后将三角形添加到父对象中,并定位在我们之前计算的中点。因此,当三角形缩放时,它们相对于它们在二十面体形状中的位置进行缩放。
以下是构造不相交三角形的代码:
(defn icos []
(let [icosahedron (js/THREE.Object3D.)]
(doseq [triangle indices
:let [vs (map vertices triangle)
[x y z :as face-center] (map average (transpose vs))
normalized-vertices (for [v vs]
(map - v face-center))
face-mesh (geo normalized-vertices)]]
(.set (.-position face-mesh) x y z)
(.add icosahedron face-mesh))
icosahedron))
对于每个三角形,查找其顶点。找到面部中心。从每个顶点中减去面中心。创建几何图形。将几何图形定位在相对于二十面体的面中心。你可以在github上看到完整的渲染代码。
最终结果:Icopop允许您在旋转时缩放三角形或二十面体。
- 砌体不能填补小缺口
- 如何检查用户在html5视频播放器中观看了完整的视频
- PERL-下载CSV文件不完整
- 如何将元素从iframe附加到父体
- 文本框应该只允许十六进制值
- Json在完整日历中对数据进行了编码
- 如何计算二十面体的法线
- 正在将unicode转换为十六进制
- 如何在下拉列表中选择完整的日历月份和年份
- 谷歌公共日历链接没有'不工作(完整日历)
- 如何在完整日历中的当天点击时显示活动详细信息
- JavaScript选择器:查找包含具有特定属性的子体的节点
- 表单's的action属性-如何在javascript中指定完整的应用程序路径
- 将GET请求(HTML字符串)转换为完整的DOM对象
- NodeJS中POST请求的请求体为null
- HTML5历史记录-返回上一个完整页面按钮
- 在js中将字符串转换为十六进制
- 纯JS中的AJAX完整处理程序
- 如何使用jQuery迭代id名称的变体(如idname1、idname2)
- 如何在二十面体上使三角形侧面积增加和减少,而形状却不保持“完整”