html sun app,HTML5 之 太阳系

ca56232b3bbedf9a539d07f37fffb99a.gif

3144d8b7615c79d9f638db40d5689d26.gif

a218af6549b45ee526caf607ebff1358.gif

0f8df0e29816ae721419de940fb833d1.gif

HTML5 之 太阳系

var time = 0, gc = document.getElementById('em').getContext('2d');

//行星参数,days公转周期,incolor渐变内色,outcolor渐变外色,orbit轨道半径,planet行星半径,start起始位置(弧度)

var planets = [

{ days: 87.7, incolor: 'rgb(166,150,151)', outcolor: 'rgb(93,62,64)', orbit: 50, planet: 2, start: 0 },

{ days: 224.7, incolor: 'rgb(196,187,172)', outcolor: 'rgb(31,19,21)', orbit: 70, planet: 4, start: 0 },

{ days: 365.24, incolor: 'rgb(120,177,232)', outcolor: 'rgb(5,12,18)', orbit: 90, planet: 5, start: 0 },

{ days: 686.98, incolor: 'rgb(206,201,182)', outcolor: 'rgb(118,66,45)', orbit: 120, planet: 3, start: 0 },

{ days: 4332.59, incolor: 'rgb(192,164,143)', outcolor: 'rgb(50,34,34)', orbit: 175, planet: 15, start: 0 },

{ days: 10759.5, incolor: 'rgb(247,249,227)', outcolor: 'rgb(92,69,51)', orbit: 235, planet: 12, start: 0 },

{ days: 30799.1, incolor: 'rgb(167,225,228)', outcolor: 'rgb(25,36,58)', orbit: 305, planet: 10, start: 0 },

{ days: 60152, incolor: 'rgb(6,97,178)', outcolor: 'rgb(30,59,115)', orbit: 385, planet: 9, start: 0 }

];

function drawSun() {

//绘制太阳

gc.beginPath();

gc.arc(400, 400, 30, 0, 360);

gc.closePath();

grad = gc.createRadialGradient(400, 400, 0, 400, 400, 25);

grad.addColorStop(0, 'rgb(255,0,0)');

grad.addColorStop(1, 'rgb(255,153,0)');

gc.fillStyle = grad;

gc.fill();

}

function drawPlanet(i) {

var grad = null, pl = planets[i];

if (pl.start == 0) {

pl.start = Math.floor(Math.random() * 360);

}

//绘制行星轨道

gc.beginPath();

gc.arc(400, 400, pl.orbit, 0, 360);

gc.closePath();

gc.strokeStyle = 'rgb(100,100,100)';

gc.stroke();

//绘制行星

gc.save();

gc.translate(400, 400);

gc.rotate((time * 360 / pl.days + pl.start) * Math.PI / 180);

gc.beginPath();

gc.arc(0, -pl.orbit, pl.planet, 0, 360);

gc.closePath();

grad = gc.createRadialGradient(0, -pl.orbit, 0, 0, -pl.orbit, pl.planet);

grad.addColorStop(0, pl.incolor);

grad.addColorStop(1, pl.outcolor);

gc.fillStyle = grad;

gc.fill();

gc.restore();

}

function drawSolar() {

gc.clearRect(0, 0, 800, 800);

drawSun();

for (var i = 0, len = planets.length; i < len; i++) {

drawPlanet(i);

}

time += 0.25;

}

setInterval(drawSolar, 25);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值