We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
原文:Tiled Lines
今天,我打算在这里讲一个很早期却很简单的编程艺术。它就是最初在 Commodore 64 编码实现的 10 PRINT。
Commodore 64:Commodore 64,也称为C64、CBM 64或在瑞典被称作VIC-64,是由Commodore(康懋达国际)公司于1982年1月推出的8位家用电脑。——百度百科
由于其简单而惊艳,已被多次实现。
这里我们打算使用 canvas 实现,没有额外 API。只需在 HTML 中放置一个 300x300 像素的 <canvas> 元素。
<canvas>
首先进行初始化,没有任何渲染操作。
var canvas = document.querySelector('canvas'); var context = canvas.getContext('2d'); var size = window.innerWidth; canvas.width = size; canvas.height = size;
以上代码将 canvas 设置为方形,并为我们提供了用于绘制的 context 上下文。
context
现在,再创建一个用于绘制的 draw 函数,其接收 x、y、width 和 height 参数。随后调用,尽管函数为空。
function draw(x, y, width, height) { // TODO: Functionality here } draw(0, 0, size, size);
现在,我们将使用 draw 函数绘制一些从 (0, 0) 坐标到 canvas 宽高坐标的东西。
draw
(0, 0)
至于绘制什么东西,那从一条简单的线开始。
context.moveTo(x, y); context.lineTo(x + width, y + height); context.stroke();
这样我们就拥有一条从 canvas 左上角至右下角的对角线,而且是不可变的。
为了使其具有“活性”,我们需要对它进行更改,既 50% 的概率将其替换成从右上角至左下角的对角线。总的来说,就是将“艺术”从我们双手释放给计算机完成。
从代码实现上,我们将添加一个随机布尔值,并将其放置在 if 语句中:
var leftToRight = Math.random() >= 0.5; if( leftToRight ) { context.moveTo(x, y); context.lineTo(x + width, y + height); } else { context.moveTo(x + width, y); context.lineTo(x, y + height); } context.stroke();
Math.random() 将返回一个 0~1 的数字,这给予了我们二选一的概率。
Math.random()
最后一步是“分而治之”。因为,100 条线比 1 条线有趣多了。
添加 step 变量:
step
var step = 100
该变量表示“步伐距离”。在本案例中,width 是 400,step 是 100,既需要填充 4 次(译者注:横向 4 次,纵向 4 次,共 16 次)。
width
for( var x = 0; x < size; x += step) { for( var y = 0; y < size; y+= step ) { draw(x, y, step, step); } }
效果怎么样?我们还可以缩短"步伐距离":
var step = 20
现在,我们拥有一个更复杂漂亮的作品了。
没错,这就是本教程的全部!
你可以随意调整代码中的任意变量,如起始点 x, y 等。当然,step 应该是最有趣的地方。另外,draw 函数可以绘制比对角线更复杂的东西。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
原文:Tiled Lines
今天,我打算在这里讲一个很早期却很简单的编程艺术。它就是最初在 Commodore 64 编码实现的 10 PRINT。
由于其简单而惊艳,已被多次实现。
这里我们打算使用 canvas 实现,没有额外 API。只需在 HTML 中放置一个 300x300 像素的
<canvas>
元素。首先进行初始化,没有任何渲染操作。
以上代码将 canvas 设置为方形,并为我们提供了用于绘制的
context
上下文。现在,再创建一个用于绘制的 draw 函数,其接收 x、y、width 和 height 参数。随后调用,尽管函数为空。
现在,我们将使用
draw
函数绘制一些从(0, 0)
坐标到 canvas 宽高坐标的东西。至于绘制什么东西,那从一条简单的线开始。
这样我们就拥有一条从 canvas 左上角至右下角的对角线,而且是不可变的。
为了使其具有“活性”,我们需要对它进行更改,既 50% 的概率将其替换成从右上角至左下角的对角线。总的来说,就是将“艺术”从我们双手释放给计算机完成。
从代码实现上,我们将添加一个随机布尔值,并将其放置在 if 语句中:
Math.random()
将返回一个 0~1 的数字,这给予了我们二选一的概率。最后一步是“分而治之”。因为,100 条线比 1 条线有趣多了。
添加
step
变量:该变量表示“步伐距离”。在本案例中,
width
是 400,step
是 100,既需要填充 4 次(译者注:横向 4 次,纵向 4 次,共 16 次)。效果怎么样?我们还可以缩短"步伐距离":
现在,我们拥有一个更复杂漂亮的作品了。
没错,这就是本教程的全部!
你可以随意调整代码中的任意变量,如起始点 x, y 等。当然,
step
应该是最有趣的地方。另外,draw
函数可以绘制比对角线更复杂的东西。The text was updated successfully, but these errors were encountered: