【重点突破】——two.js模拟绘制太阳月亮地球转动

2023-10-28 06:59

本文主要是介绍【重点突破】——two.js模拟绘制太阳月亮地球转动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、引言

自学two.js第三方绘图工具库,认识到这是一个非常强大的类似转换器的工具,提供一套固定的接口,可用在各种技术下,包括:Canvas、Svg、WebGL,极大的简化了应用的开发。这里,我使用two.js手册里教的一些方法,做一个小练习,模拟绘制太阳-月亮-地球自转公转的类银河系转动的动画效果。

 

二、原理

在Two.js中和Canvas、SVG都不同的有这么几个地方:

  • Two.js中所有的旋转都是以自己为中心
  • Two.js中的旋转不会累加
  • Two.js中不使用定时器,使用Two.play()方法,类似于Flash动画(但它的底层是有定时器的,该方法每秒钟调用60次two.update()方法

 

三、简单模型

复制代码
<!DOCTYPE html>
<html>
<head lang="en"><meta charset="UTF-8"><title></title><style>svg,canvas{background: #ddd;}</style>
</head>
<body><h3>使用Two.js创建圆形和矩形说明动画原理</h3><div id="box"></div><script src="js/two.js"></script><script>//创建一个2D绘图对象var two = new Two({width:800,height:400,type:Two.Types.svg}).appendTo(box);//画一个圆形和矩形——矩形定位点在矩形中心var c = two.makeCircle(-200,0,100);var r = two.makeRectangle(200,0,200,200);//创建小组,平移小组的原点var g = two.makeGroup(r,c);g.translation.set(400,200);g.rotation = 30*Math.PI/180;//动画原理:调用two.play()方法var deg = 0;two.on('update',function(){deg += 3;g.rotation = deg*Math.PI/180;
        });two.play();</script>
</body>
</html>
复制代码

效果:

 

四、太阳-月亮-地球自转公转

复制代码
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="js/two.js"></script><style>svg {background: #222;}</style>
</head>
<body><div id="container"></div><script>var two =new Two({width:600, height: 600}).appendTo(container);var sun = two.makeCircle(0,0,100);sun.fill = 'red';sun.stroke = 'transparent';var sunOrbit = two.makeCircle(0,0,200);sunOrbit.fill = 'transparent';sunOrbit.stroke = '#ccc';var earth = two.makeCircle(200, 0, 30);earth.fill = 'blue';earth.stroke = 'transparent';var earthOrbit = two.makeCircle(200, 0, 50);earthOrbit.fill = 'transparent';earthOrbit.stroke = '#ccc';var moon = two.makeCircle(50,0, 5);moon.fill = 'gold';moon.stroke = 'transparent';moon.rotation = 0;var moonGroup = two.makeGroup(moon);moonGroup.translation.set(200,0);var earthGroup = two.makeGroup(earth,earthOrbit,moonGroup);var sunGroup = two.makeGroup(sun,sunOrbit,earthGroup);sunGroup.translation.set(two.width/2, two.height/2);//two.update();
   two.bind('update', function(){moonGroup.rotation += 10*Math.PI/180;
     moonGroup.rotation %= 2*Math.PI;earthGroup.rotation += 2*Math.PI/180;
     earthGroup.rotation %= 2*Math.PI;})two.play();</script>
</body>
</html>
复制代码

效果:

这篇关于【重点突破】——two.js模拟绘制太阳月亮地球转动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/291506

相关文章

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

JS 实现复制到剪贴板的几种方式小结

《JS实现复制到剪贴板的几种方式小结》本文主要介绍了JS实现复制到剪贴板的几种方式小结,包括ClipboardAPI和document.execCommand这两种方法,具有一定的参考价值,感兴趣的... 目录一、Clipboard API相关属性方法二、document.execCommand优点:缺点:

使用Python绘制蛇年春节祝福艺术图

《使用Python绘制蛇年春节祝福艺术图》:本文主要介绍如何使用Python的Matplotlib库绘制一幅富有创意的“蛇年有福”艺术图,这幅图结合了数字,蛇形,花朵等装饰,需要的可以参考下... 目录1. 绘图的基本概念2. 准备工作3. 实现代码解析3.1 设置绘图画布3.2 绘制数字“2025”3.3

使用Python绘制可爱的招财猫

《使用Python绘制可爱的招财猫》招财猫,也被称为“幸运猫”,是一种象征财富和好运的吉祥物,经常出现在亚洲文化的商店、餐厅和家庭中,今天,我将带你用Python和matplotlib库从零开始绘制一... 目录1. 为什么选择用 python 绘制?2. 绘图的基本概念3. 实现代码解析3.1 设置绘图画

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

Python绘制土地利用和土地覆盖类型图示例详解

《Python绘制土地利用和土地覆盖类型图示例详解》本文介绍了如何使用Python绘制土地利用和土地覆盖类型图,并提供了详细的代码示例,通过安装所需的库,准备地理数据,使用geopandas和matp... 目录一、所需库的安装二、数据准备三、绘制土地利用和土地覆盖类型图四、代码解释五、其他可视化形式1.

如何用Python绘制简易动态圣诞树

《如何用Python绘制简易动态圣诞树》这篇文章主要给大家介绍了关于如何用Python绘制简易动态圣诞树,文中讲解了如何通过编写代码来实现特定的效果,包括代码的编写技巧和效果的展示,需要的朋友可以参考... 目录代码:效果:总结 代码:import randomimport timefrom math

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象