three.js之旋转成型(车削缓冲几何体)

news2025/2/6 8:56:59

文章目录

  • 简介
  • 例子
  • 解释

专栏目录请点击

简介

  1. 一条曲线围绕空间中的某个轴进行旋转,会形成一个几何体
  2. 这个在three.js中也是可以实现的,主要就是使用到了three.js中的LatheGeometry,官网

例子

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <style>
        body {
            margin: 0;
            overflow: hidden;
            /* 隐藏body窗口区域滚动条 */
        }
    </style>
    <!--引入three.js三维引擎-->
    <script src="http://www.yanhuangxueyuan.com/versions/threejsR92/build/three.js"></script>
    <!-- 引入threejs扩展控件OrbitControls.js -->
    <script src="http://www.yanhuangxueyuan.com/versions/threejsR92/examples/js/controls/OrbitControls.js"></script>
</head>

<body>
    <script>
        /**
         * 创建场景对象Scene
         */
        var scene = new THREE.Scene();
        /**
         * 创建旋转网格模型
         */
        // 三个顶点构成的轮廓(理解为两条相连的直线段)
        // Vector2对象作为元素构成的数组
        var points = [
            new THREE.Vector2(50, 60),
            new THREE.Vector2(25, 0),
            new THREE.Vector2(50, -60)
        ];
        // 30:旋转方向细分数   0,2*Math.PI:旋转起始角度设置
        var geometry = new THREE.LatheGeometry(points, 30, 0, 2 * Math.PI);
        var material = new THREE.MeshPhongMaterial({
            color: 0x0000ff,//三角面颜色
            side: THREE.DoubleSide//两面可见
        });//材质对象
        // material.wireframe = true;//线条模式渲染(查看细分数)
        var mesh = new THREE.Mesh(geometry, material);//旋转网格模型对象
        scene.add(mesh);//旋转网格模型添加到场景中
        /**
         * 光源设置
         */
        //点光源
        var point = new THREE.PointLight(0xffffff);
        point.position.set(400, 200, 300); //点光源位置
        scene.add(point); //点光源添加到场景中
        //环境光
        var ambient = new THREE.AmbientLight(0x444444);
        scene.add(ambient);
        /**
         * 相机设置
         */
        var width = window.innerWidth; //窗口宽度
        var height = window.innerHeight; //窗口高度
        var k = width / height; //窗口宽高比
        var s = 150; //三维场景显示范围控制系数,系数越大,显示的范围越大
        //创建相机对象
        var camera = new THREE.OrthographicCamera(-s * k, s * k, s, -s, 1, 1000);
        camera.position.set(200, 300, 200); //设置相机位置
        camera.lookAt(scene.position); //设置相机方向(指向的场景对象)
        /**
         * 创建渲染器对象
         */
        var renderer = new THREE.WebGLRenderer();
        renderer.setSize(width, height); //设置渲染区域尺寸
        renderer.setClearColor(0xb9d3ff, 1); //设置背景颜色
        document.body.appendChild(renderer.domElement); //body元素中插入canvas对象

        // 渲染函数
        function render() {
            renderer.render(scene, camera); //执行渲染操作
        }
        render();
        //创建控件对象  相机对象camera作为参数   控件可以监听鼠标的变化,改变相机对象的属性
        var controls = new THREE.OrbitControls(camera, renderer.domElement);
        //监听鼠标事件,触发渲染函数,更新canvas画布渲染效果
        controls.addEventListener('change', render);
    </script>
</body>

</html>

渲染如下

在这里插入图片描述

解释

  1. 在代码中,我们首先新建了三个点,这三个点组成了一个折线
var points = [
    new THREE.Vector2(50, 60),
    new THREE.Vector2(25, 0),
    new THREE.Vector2(50, -60)
];

在这里插入图片描述
2. 使用相关API进行旋转成型

var geometry = new THREE.LatheGeometry(points, 30, 0, 2 * Math.PI);
var material = new THREE.MeshPhongMaterial({
    color: 0x0000ff,//三角面颜色
    side: THREE.DoubleSide//两面可见
});//材质对象
  1. 相关参数如下
参数
pointsVector2表示的坐标数据组成的数组
segments圆周方向细分数,默认12
phiStart开始角度,默认0
phiLength旋转角度,默认2π

这样,我们就可以得到一个旋转的几何体

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/102968.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot2.X+Vue+UniAPP 全栈开发医疗小程序 中间件搭建

文章目录一、安装Docker环境1. 关闭SELINUX服务2. 更新yum程序3. 安装Docker4. 管理Docker二、搭建HBasePhoenix大数据平台2.1. 加载镜像2.2. 创建容器2.3. 创建逻辑库2.4. 创建数据表与导入数据2.5. 配置JDBC连接信息三、Redis服务3.1. 加载镜像3.2. 配置文件3.3. 创建Redis容…

专注性能的多端研发框架 - ice.js 3 正式发布!

ice.js 框架在之前的版本中&#xff0c;主要服务于中后台 / PC 的项目研发&#xff0c;而随着无线端以及多端能力的拓展&#xff0c;ice.js 3 将成为一套面向大淘宝技术的终端应用框架。因此在 ice.js 3 的版本中除了「开发者体验」之外&#xff0c;还围绕「用户体验」探索了大…

拥抱实体经济,可以说是当下互联网参与者的首要选择

拥抱实体经济&#xff0c;绝对是当下互联网玩家们的首要选择。无论是头部的互联网企业来讲&#xff0c;还是新生的互联网玩家而言&#xff0c;它们都不约而同地将关注的焦点聚焦在了这样一个方向上。   透过这一点&#xff0c;我们可以非常明显地感受到&#xff0c;一个全新的…

1574_AURIX_TC275_SCU中的杂项控制

全部学习汇总&#xff1a; GitHub - GreyZhang/g_TC275: happy hacking for TC275! 接下来的这一段算是SCU章节最后的一次内容梳理了&#xff0c;剩下的内容也不是很多了。杂项并不是英文的直接翻译&#xff0c;算是我自己选择的一个表达方式。 这里涉及到的功能有CCU6&#x…

基于机器学习算法与历史数据预测未来的站点关闭(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 应用背景&#xff1a; 通过分析序列进行合理预测&#xff0c;做到提前掌握未来的发展趋势&#xff0c;为业务决策提供依据&am…

2023材料科学与工程国际会议(CoMSE 2023)

2023材料科学与工程国际会议&#xff08;CoMSE 2023&#xff09; 重要信息 会议网址&#xff1a;www.icomse.org 会议时间&#xff1a;2023年3月24-26日 召开地点&#xff1a;中国上海 截稿时间&#xff1a;2023年1月25日 录用通知&#xff1a;投稿后2周内 收录检索&…

手把手教你使用Appium进行IOS真机自动化测试

讲解方式&#xff1a; 课程内容条理清晰&#xff0c;目标明确&#xff0c;由浅入深&#xff0c;环环相扣。重点部分进行额外梳理和总结&#xff0c;更易理解和吸收。 教程推荐&#xff1a;使用Appium进行IOS真机自动化测试 课程亮点&#xff1a;1&#xff0c;讲解清晰&a…

VRRP多备份组+策略路由实现主备负载

上篇文章&#xff0c;我们介绍了VRRP单备份组和策略路由之间主备切换的差异&#xff08;&#xff09;&#xff0c;整体上看&#xff0c;单备份组VRRP的主备切换速度非常快&#xff0c;用过调整配置&#xff0c;可以轻轻松松将切换时间压缩到1秒钟以内&#xff1b;但是主备之间无…

【大数据技术Spark】DStream编程操作讲解实战(图文解释 附源码)

DStream编程 批处理引擎Spark Core把输入的数据按照一定的时间片&#xff08;如1s&#xff09;分成一段一段的数据&#xff0c;每一段数据都会转换成RDD输入到Spark Core中&#xff0c;然后将DStream操作转换为RDD算子的相关操作&#xff0c;即转换操作、窗口操作以及输出操作…

和冬天有关的歌

我写过关于四季《新朝花夕拾》&#xff0c;我也写过关于夏天的歌&#xff1a;《和夏天有关的歌》&#xff0c;所以我也想写写冬天。&#xff08;1&#xff09;北风当你想到冬天的时候&#xff0c;你会想起什么&#xff1f;我会想到&#xff1a;北风、北方。正好有这么一首歌&am…

神经网络架构搜索

神经网络架构搜索 定义内涵 神经网络架构搜索是为给定数据集自动找到一个或多个架构的任务&#xff0c;这些架构将为给定 的数据集生成具有良好结果的模型&#xff0c;其本质是在高维空间的最优参数搜索问题。 技术背景 深度学习模型的使用越来越大众化&#xff0c;在很多行…

免费内网穿透工具测评对比,谁更好用 3

文章目录1. 前言2. 对比内容2.1 TCP协议功能及操作对比2.1.1 网云穿的TCP设置2.1.2 cpolar的TCP设置1.2 使用感受对比3. 结语1. 前言 发布本地网页通常是内网穿透的主要作用之一&#xff0c;但并不是唯一作用&#xff0c;内网穿透还能将本地硬件发布到公共互联网上&#xff0c…

ASP.NET企业HR人力资源管理系统源码(带使用手册和操作说明)

中小型企业HR人力资源管理系统源码带使用手册和操作说明 【程序语言】&#xff1a;.NET 【数据库】&#xff1a;SQL SERVER 2008 【运行环境】&#xff1a;WINDOWSIIS 【其他】&#xff1a;前端bootstrap框架 了解更多HR源码事宜可私信我&#xff01; 系统运行环境&#x…

微信小程序云开发博客系统源代码,让写博客像发朋友圈一样简单,含使用部署教程

博客就两种&#xff1a;一是随笔&#xff0c;记录自己的成长历程&#xff0c;二是有目的的发文&#xff0c;例如搬运各种网赚文&#xff0c;我想大部分朋友做博客的初衷都是有一块自己的心灵净土&#xff0c;于是催生了wxapp-blog这款小程序。 完整代码下载地址&#xff1a;微…

零基础如何系统地自学Python?Python应该怎么学?

这次疫情让很多人&#xff0c;都发现自己真的适合群居&#xff0c;也让部分人觉得独居是个不错的选择&#xff0c;但是大部分人都会更明白工作的重要性。 如果没有收入&#xff0c;没有朋友&#xff0c;没有同事&#xff0c;没有那些鸡毛蒜皮的小事&#xff0c;会发现&#xf…

C++ Primer 第六章 函数

C Primer 第六章 函数6.1. Function BasicsParameters and Arguments6.2. Argument Passing6.2.3. const Parameters and Arguments6.2.4. Array Parameters6.2.6. Functions with Varying Parametersinitializer_list ParametersEllipsis Parameters6.3. Return Types and the…

Java多线程-线程的创建(Thread类的基本使用)

文章目录一. 线程和Thread类1. 线程和Thread类1.1 Thread类的构造方法1.2 启用线程的相关方法2. 创建第一个Java多线程程序3. 使用Runnable对象创建线程4. 使用内部类创建线程5. 使用Lambada表达式创建线程6. 多线程并发执行简单演示7. 多线程并发执行的优势二. Thread类的属性…

【专业数据】六.2020~2022年北京交通大学【新一代电子信息技术】专业复试线/分数线差/计划招生数/复试数/录取数/复试比例/录取率

文章目录 1.专业介绍2.2020-2022年国家线/复试线/分数线差2.1.数据总览2.2.数据指标2.2.1.复试分数线2.2.2.分数线差3.2020-2022年计划招生数/复试数/录取数/复试比例/录取率3.1.数据总览3.2.数据指标3.2.1.复试比例3.2.2.录取率4.参考资料欢迎订阅本专栏:《北交计算机复试经验…

【数据结构】树和二叉树

半山腰很挤&#xff0c;你得去山顶看看 目录 1.树 1.1 树的概念 1.2 树的特征 1.3 树每个结点的关系 1.4 树的表示形式 2.二叉树 2.1 二叉树的概念 2.2 特殊的二叉树 2.3 二叉树的性质 2.4 二叉树的存储 2.5 二叉树的基本操作 2.5.1 判断二叉树是否为空 2.…

JAVA类的继承和多态基础笔记(二)

1.继承的基本概念 父类中某一个属性是私有的&#xff0c;通过子类对象就不能访问父类的私有变量。 继承完之后拥有父类全部的东西&#xff0c;但是可以根据实际情况进行重写。 一般所有的类都是继承Object的&#xff0c;实现所有他的方法 像这样是重写了Object类的tostring方法…