Improve Yourselves资源帝的干货艺术、设计

情人节送她一朵独一无二的玫瑰花

2015-02-12  本文已影响2391人  蓝桥云课

【情人节福利】JS实现玫瑰花

前言

不得不看的提示
先放压缩过的html代码,把下段代码复制到你的新建的html文件用浏览器打开就能看到一个玫瑰。我们管它叫生产版好了,三步就能完成。

在文档的最后附上一个简单的开发版本,供大家自行定制 :-)

实验楼的虚拟机共享桌面就能让你喜欢的人看到哟~

含苞待放的玫瑰

详细步骤

使用了多个不同的形状图来组成这朵代码玫瑰。共使用了31个形状:24个花瓣,4个萼片,2个叶子和1根花茎,其中每一个形状图都用代码进行描绘。

首先,来定义一个采样范围:

<script>
function surface(a, b) { 
    // 使用a和b作为采样范围的参数
    return {
        x: a*50,
        y: b*50
    };
    // 该表面是一个50*50单元区域
}
</script>

然后,编写形状描绘代码:

<script>
var canvas = document.body.appendChild(document.createElement("canvas")),
    context = canvas.getContext("2d"),
    a, b, position;
    
for (a = 0; a < 1; a += .1) {
    for (b = 0; b < 1; b += .1) {
        position = surface(a, b);
        context.fillRect(position.x, position.y, 1, 1);
    }
}
</script>

这时,看到的效果是这样的:


绽放的玫瑰

为了使玫瑰的每个部分在同一时间完成并呈现,还需要添加一个功能,为每部分设置一个参数以返回值来进行同步。并用一个分段函数代表玫瑰的各个部分。比如在花瓣部分,可以使用旋转和变形来创建它们。

虽然表面采样方法是创建三维图形非常著名的、最古老的方法之一,但这种把蒙特卡罗、z-buffer加入到表面采样中的方法并不常见。对于现实生活场景的制作,这也许算不上很有创意,但它简易的代码实现和很小的体积仍令人满意。

快去做一朵与众不同的玫瑰送给你的那个她/他吧!

Happy Valentine's Day

上一篇下一篇

猜你喜欢

热点阅读