html5做的太阳系

效果图:

源代码:

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<canvas id="canvas" width="1000" height="1000" style="background-color:black">
你的浏览器不支持canvas
</canvas>
<script type="text/javascript">
var canvas=document.getElementById("canvas");
var cxt=canvas.getContext('2d');
//轨道

function drawTrack(){
for(var i=0;i<8;i++){
cxt.beginPath();
cxt.strokeStyle="white";
cxt.arc(500,500,(i+1)*50,0,360,false);
cxt.stroke();
cxt.closePath();
}
}
drawTrack();
//星球
function Star(x,y,radius,cycle,scolor,ecolor){

//画出星球需要哪些属性
//星球的坐标点
this.x=x;
this.y=y;
//星球的半径
this.radius=radius;
//公转周期
this.cycle=cycle;
//星球的颜色
this.scolor=scolor;
this.ecolor=ecolor;
//新建一个渐变颜色空对象
this.color=null;
this.time=0;
//设置一个计时器
this.draw=function(){
cxt.save();
//重置0.0坐标点
cxt.translate(500,500);
//设置旋转角度
cxt.rotate(this.time*(360/this.cycle)*Math.PI/180);
cxt.beginPath();
cxt.strokeStyle="white";
cxt.arc(this.x,this.y,this.radius,0,360,false);
//设置星球颜色
//设置渐变颜色
this.color=cxt.createRadialGradient(this.x,this.y,0,this.x,this.y,this.radius);
this.color.addColorStop(0,this.scolor);
this.color.addColorStop(1,this.ecolor);
cxt.fillStyle=this.color;
//填充渐变颜色
//填充星球颜色

cxt.closePath();
cxt.fill();
cxt.restore();

this.time+=1;
}

}
//画星球
function Sun(){
Star.call(this,0,0,20,0,"#f00","#f90");
}

function Mercury(){
Star.call(this,0,-50,10,87.70,"#A69697","#5c3e40");

}
function Venus(){
Star.call(this,0,-100,10,224.701,"#c4bbac","#1f1315");
}
function Earth(){
Star.call(this,0,-150,10,365.224,"#78b1e8","#050c12");
}
function Mars(){
Star.call(this,0,-200,10,686.98,"#cec9b6","#76422d");
}
function Jupiter(){
Star.call(this,0,-250,10,686.98,"#c0a48e","#322222");
}
function Satrun(){
Star.call(this,0,-300,10,10759.5,"#f7f9e3","#5c4533");
}
function Uranus(){
Star.call(this,0,-350,10,30799.095,"#A7e1e5","#19243a");
}
function Neptune(){
Star.call(this,0,-400,10,60152,"#0661b2","#1e3b73");
}
var sun=new Sun();
var Mercury=new Mercury();
var Venus=new Venus();
var Earth=new Earth();
var Mars=new Mars();
var Jupiter=new Jupiter();
var Satrun=new Satrun();
var Uranus=new Uranus();
var Neptune=new Neptune();

function move(){
//清除画布
cxt.clearRect(0,0,1000,1000);
//画出轨道
drawTrack();
sun.draw();
Mercury.draw();
Venus.draw();
Earth.draw();
Mars.draw();
Jupiter.draw();
Satrun.draw();
Uranus.draw();
Neptune.draw();
}

//使各星球进行运动
setInterval( move,10);

</script>
</body>
</html>

转载于:https://www.cnblogs.com/cjh1/p/6617676.html

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

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

相关文章

html中#include file的使用方法

有两个文件a.htm和b.htm&#xff0c;在同一文件夹下a.htm内容例如以下 <!-- #include file"b.htm" --> b.htm内容例如以下 今天&#xff1a;雨 31 ℃&#xff5e;26 ℃ <br />明天&#xff1a;雷阵雨 33 ℃&#xff5e;27 ℃ 直接在浏览器中打开a&#…

Android之第一次不显示EditText光标

1、问题 光标会默认显示在第一个EditText框中&#xff0c;如果不想显示光标&#xff0c;且也不想把该光标移动到下一个EditText框。2、解决办法 在该 EditText之前增加一个不可见的LinearLayout<LinearLayout android:focusable"true"android:focusableInTouchMod…

读取bmp图片数据

1 public void getBMPImage(String source) throws Exception {2 3 clearNData(); //清除数据保存区4 FileInputStream fs null;5 6 try {7 fs new FileInputStream(source);8 int bfLen 14;9 …

Windows 11 任务管理器重磅升级!界面迎来全新设计,十年来首次大改!

面向 Dev 频道的 Windows 预览体验成员&#xff0c;微软近日发布了 Windows 11 预览版 Build 22557。在此版本中&#xff0c;任务管理器迎来了全新的设计&#xff0c;这是其自 Windows 8 以来的首次变更&#xff0c; 也是任务管理器十年来最大的一次升级。史诗级更新&#xff0…

modbus调试工具 linux,linux libmodbus的移植

1.前言Modbus是一个工业通信系统&#xff0c;由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。2.移植步骤第一&#xff0c;进入libmodbus目录下&#xff0c;在交叉编译器是最好…

Android之用 ExpandableListView使用解析(三级列表的实现)

&#xfeff;&#xfeff;Android之用 ExpandableListView使用解析&#xff08;三级列表的实现&#xff09; 下载地址如下&#xff1a;http://download.csdn.net/download/u011068702/9839848

微博自媒体,一个新的生态

昨日&#xff0c;微博、UC和360&#xff0c;三方宣布将联合打造自媒体平台&#xff0c;这是继微信公众平台、搜狐新闻客户端、百度百家、今日头条之后的又一大自媒体平台。自媒体平台之争正愈演愈烈&#xff0c;而这对自媒体人和读者来说都算是好事。为何巨头们钟爱自媒体起初微…

开发者说PaddleOCR的.NET封装与应用部署

本项目是一个基于PaddleOCR的C代码修改并封装的.NET的工具类库。包含文本识别、文本检测、基于文本检测结果的统计分析的表格识别功能&#xff0c;同时针对小图识别不准的情况下&#xff0c;做了优化&#xff0c;提高识别准确率。项目包含总模型仅8.6M的超轻量级中文OCR&#x…

转载 雨松mono Unity获取游戏对象详解(来自我的长微博)

Unity获取游戏对象详解&#xff08;来自我的长微博&#xff09; 转载 自 雨松mono 本文固定链接: http://www.xuanyusong.com/archives/2768转载请注明: 雨松MOMO 2014年06月16日 于 雨松MOMO程序研究院 发表我觉得Unity里面的Transform 和 GameObject就像两个双胞胎兄弟一样&a…

ps之解决eps图片不能保存为png格式问题

1、问题 eps图片不能保存为png问题&#xff0c;日了狗 2、解决办法 原因&#xff1a; 在cmyk模式下&#xff0c;png不支持印刷输出的CMYK模式 在lab模式下&#xff0c;png或jpg不能存储LAB模式的色彩信息 将图片保存为png方法步骤&#xff1a; 图像——模式——选择RGB模式 3、…

linux怎么看是否安装kde桌面,ubuntu 7上安装kde桌面

开始使用Red Hat是因为一次服务器配置的需要&#xff0c;学院的精品课程建设需要自己建立一个支持JSP/Servlet 的服务器&#xff0c;由于以前做开发一直在windows平台下开发很少在linux下进行开发&#xff0c;最多也就是在linux 下进行测试。不过Red Hat的体积确实不敢恭维&am…

CSHOP后台设置SMTP发邮件提示 Error: need RCPT command 错误解决

其实错误原因并不是因为此错误&#xff0c;经检测&#xff0c;邮件服务器返回的真实错误是 501 mail from address must be same as authorization user 。只因为同时返回了 503 Error: need MAIL command 和 503 Error: need RCPT command &#xff0c;而ECSHOP只提示了最后一…

AngularJS之watch

简介 首先apply方法会触发evel方法&#xff0c;当evel方法解析成功后&#xff0c;会去触发digest方法&#xff0c;digest方法会触发watch方法。 在digest执行时&#xff0c;如果watch观察的的value与上一次执行时不一样时&#xff0c;就会被触发。 AngularJS内部的watch实现了页…

真不值!技术大神,却只是阿里P6...

阅读本文大概需要5分钟。昨天在知乎上看到一个程序员发展的好问题&#xff1a;死月是前端领域一个比较知名的IP&#xff0c;之前在大搜车带领整个node团队&#xff0c;出过书写过技术专栏&#xff0c;在业内享有比较高的知名度。认识死月的同学都对他评价非常高&#xff0c;甚至…

linux之如何快速查看电脑内存大小

1、问题 linux之如何快速查看电脑内存大小 2、解决办法 vim /proc/meminfo 3、结果展示

有趣的时间

人的数字造型 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body> <embed width"160" height"70" allowscriptaccess"never…

技术网址收藏

个人博客主页 http://www.mgenware.com/blog/ WPF开发一款软件自动升级组件 http://www.cnblogs.com/hiyz/archive/2012/07/12/2587458.html 限制RICHTEXTBOX的输入的范围 http://www.cnblogs.com/xe2011/p/3780793.html 计时器 http://www.cnblogs.com/xe2011/p/4439700.html …

为什么启动hbase shell后,创建按create 'test', 'cf'失败?

2019独角兽企业重金招聘Python工程师标准>>> 答&#xff1a;是hostname的问题。 sudo gedit /etc/localhosts 将你的主机名改为127.0.0.1 即可。 转载于:https://my.oschina.net/u/923087/blog/290592

mini2440:最简单的嵌入式linux驱动程序模块,mini2440:最简单的嵌入式Linux驱动程序模块 解决找不到mini2440……sample...

原文&#xff1a;http://myswirl.blog.163.com/blog/static/5131864220109143331356/注意&#xff1a;开发Arm平台的驱动&#xff0c;需要Arm平台的源码树&#xff1b;注意&#xff1a;ARM平台的linux内核源码需要先编译&#xff0c;否则无法编译驱动&#xff1b;第一种方式&am…

Android之jni日志如何输出

1、写日志输出帮助文件 先看我之间的例子 http://blog.csdn.net/u011068702/article/details/71375920 Android之JNI动态注册native方法和JNI数据简单使用 然后在jni文件集里面写log_help.h文件,内容如下 // // Created by chenyu on 5/13/17. //#ifndef TEST_LOG_HEL…