首页 技术 正文
技术 2022年11月20日
0 收藏 959 点赞 2,766 浏览 2235 个字

现在的页面展示要求越来越高,美的展示总能吸引更多的访客。最近在学习3D打印中的切片算法,刚刚入门,发现通过three.js框架可以很好展示出3D切片细节(虽然我做的比较简单)。

//==========================================================
//导入three.js和mygeo.js文件(自定义几何体顶点和三角片信息)
//==========================================================var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(45,window.innerWidth/window.innerHeight,0.1,1000);
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth,window.innerHeight);
renderer.setClearColor("white");
document.body.appendChild(renderer.domElement);
//上面6行初始化场景、照相机及渲染器=========================var axes = new THREE.AxisHelper(10);
scene.add(axes);
//上面两行画出辅助坐标系//根据mygeo.js中的信息画自定义几何体
var geom = new THREE.Geometry();
geom.vertices = vertices;
geom.faces = faces;
geom.computeFaceNormals();
ma = new THREE.MeshBasicMaterial({color: 'black', wireframe: true});
var G = new THREE.Mesh(geom,ma);
scene.add(G);
//上面7行画出自定义的立体几何体camera.position.x = 5;
camera.position.y = 6;
camera.position.z = 8;
camera.lookAt(scene.position);
//上面几行设置相机位置//自定义的三角形片和Z=h截面总有2个交点
for(var h = 0.5;h <= 6;h += 0.5)
{
var intersection = new Array();
for(var F = 0;F < faces.length;F++)
{
var point1 = vertices[faces[F].a];
var point2 = vertices[faces[F].b];
var point3 = vertices[faces[F].c];
var surface = [point1,point2,point3]; if((surface[0].z-h)*(surface[1].z-h)<0) //0-1
{
var m = (h-surface[0].z)/(surface[1].z-surface[0].z);
var x = m * (surface[1].x-surface[0].x) + surface[0].x;
var y = m * (surface[1].y-surface[0].y) + surface[0].y;
var p = [x,y,h];
intersection.push(p);
}
if((surface[0].z-h)*(surface[2].z-h)<0) //0-2
{
var m = (h-surface[0].z)/(surface[2].z-surface[0].z);
var x = m * (surface[2].x-surface[0].x) + surface[0].x;
var y = m * (surface[2].y-surface[0].y) + surface[0].y;
var p = [x,y,h];
intersection.push(p);
}
if((surface[1].z-h)*(surface[2].z-h)<0) //1-2
{
var m = (h-surface[1].z)/(surface[2].z-surface[1].z);
var x = m * (surface[2].x-surface[1].x) + surface[1].x;
var y = m * (surface[2].y-surface[1].y) + surface[1].y;
var p = [x,y,h];
intersection.push(p);
}
} var material = new THREE.LineBasicMaterial({color: "red", linewidth: 6});
var geometry = new THREE.Geometry();
for(var i1=0;i1<intersection.length;i1++)
{
var p1 = new THREE.Vector3();
p1.set(intersection[i1][0],intersection[i1][1],intersection[i1][2]);
geometry.vertices.push(p1);
}
var line = new THREE.Line(geometry,material);
scene.add(line);
}renderer.render(scene, camera);
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,910
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,435
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,250
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,061
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,693
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,731