使用 JavaScript 探索生成艺术

使用 javascript 探索生成艺术

生成艺术是一种艺术家创建系统的技术,通常以算法的形式自动生成艺术品。这些系统可以从一组初始规则中产生无限的结果,使这个过程令人着迷且充满可能性。在本文中,我们将深入研究使用 javascript 的生成艺术世界,更具体地说,是流行的库 p5.js。

什么是生成艺术?

生成艺术依赖于创建可以生成艺术作品的无限种变体的系统。这些系统可以通过特定规则、数学算法甚至随机性来控制。系统的每次执行,都可以产生新的、独特的、视觉上有趣的艺术品。

这种艺术形式与编程密切相关,因为规则和代码定义了如何创建视觉结果。生成艺术家使用算法来定义图案、颜色、形状和运动,使每件作品都是发现的过程。

为什么选择 javascript?

javascript 是一种通用且易于访问的语言,可以直接在网络浏览器中运行,从而可以立即可视化生成艺术结果。此外,借助 p5.js 等库,只需几行代码就可以创建复杂的图形。

立即学习“Java免费学习笔记(深入)”;

p5.js 是一个专门为创建交互式和可视图形而设计的 javascript 库。它的简单性使其成为开始探索生成艺术的理想工具。

p5.j​​s 入门

设置环境

要开始使用 javascript 创建生成艺术,您只需要一个浏览器和一个代码编辑器。您可以使用 p5.js web 编辑器或下载库并将其添加到您的项目中。

p5.j​​s 草图的基本骨架

每个 p5.js 草图都分为两个主要功能:

setup():该函数在开始时运行一次。这是我们设置画布、颜色和任何初始参数的地方。draw():该函数在循环中重复运行。在这里,我们放置了绘制和创建视觉元素的说明。

这是一个基本示例:

function setup() {  createcanvas(800, 800); // create an 800x800 pixel canvas  background(255); // white background}function draw() {  noloop(); // prevent the draw function from looping  for (let i = 0; i < 100; i++) {    let x = random(width);    let y = random(height);    fill(random(255), random(255), random(255), 150); // random colors with transparency    nostroke();    ellipse(x, y, random(50, 100)); // draw random circles  }}

在这个基本草图中,我们创建一个空白画布,并用随机颜色绘制 100 个圆圈,每个圆圈的位置都是随机的。生成艺术的美妙之处在于结果的可变性。每次运行代码时,圆圈都会出现在不同的位置并具有不同的颜色。

用数学创建模式

生成艺术通常将随机性与精确的数学结构结合起来。让我们看一个基于规则形状和循环运动生成几何图案的示例:

function setup() {  createcanvas(800, 800);  background(255);  nofill();  stroke(0, 50);}function draw() {  translate(width / 2, height / 2); // move the origin to the center  let radius = 300;  for (let i = 0; i < 100; i++) {    let angle = map(i, 0, 100, 0, two_pi);    let x = radius * cos(angle);    let y = radius * sin(angle);    ellipse(x, y, 50, 50); // draw circles in a circular pattern  }  noloop(); // static drawing}

在此示例中,我们使用 cos() 和 sin() 等三角函数以圆形图案围绕画布中心分布 100 个圆。生成艺术中数学的美妙之处在于,您可以使用简单的方程式来创建复杂且令人惊讶的模式。

增加互动性

使用 javascript 和 p5.js 的一大优势是您可以轻松地为您的创作添加交互性。以下是图案颜色根据鼠标位置变化的示例:

function setup() {  createCanvas(800, 800);}function draw() {  background(255);  let numLines = 50;  let spacing = width / numLines;  for (let i = 0; i < numLines; i++) {    let x = i * spacing;    let colorValue = map(mouseX, 0, width, 0, 255); // Changes with mouse position    stroke(colorValue, 100, 150);    line(x, 0, width / 2, height);  }}

在此草图中,线条的颜色根据鼠标位置而变化。交互性是生成艺术的重要组成部分,因为它允许观看者直接影响艺术品。

结论

使用 javascript 的生成艺术打开了一个充满创意可能性的世界。使用 p5.js,我们可以将数学方程、随机函数和用户交互转换为动态且令人惊讶的视觉效果。最好的部分是,由于这个环境的灵活性,结果是独特的,并且每次执行总是不同的。

探索生成艺术是融合编程和创造力的好方法。尝试不同的形状、颜色和图案,看看您能将自己的生成艺术作品推向多远!

以上就是使用 JavaScript 探索生成艺术的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1491759.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 14:14:22
下一篇 2025年12月19日 14:14:38

相关推荐

  • React:状态 X 派生状态

    什么是派生状态?考虑文本的一种状态,然后考虑大写文本的另一种状态。 导出状态 function foo() { const [text, settext] = usestate(‘hello, za warudo!’); const [uppercasetext, setuppercasetext]…

    好文分享 2025年12月19日
    000
  • 使用 nodeJS 从头开始​​创建 ReAct Agent(维基百科搜索)

    介绍 我们将创建一个能够搜索维基百科并根据找到的信息回答问题的人工智能代理。该 react(理性与行动)代理使用 google generative ai api 来处理查询并生成响应。我们的代理将能够: 搜索维基百科获取相关信息。从维基百科页面中提取特定部分。对收集到的信息进行推理并制定答案。 […

    2025年12月19日
    000
  • JavaScript 中 Axios 和 Fetch 的区别

    在 javascript 中,axios 和原生的 fetch api 都用于发出 http 请求,但它们在特性、易用性和功能方面存在一些差异。详细介绍如下: 1. 易于使用: axios: axios 简化了发出请求和处理响应。它自动解析 json 响应,使其更易于使用。 axios.get(‘/…

    2025年12月19日
    000
  • React Native 的故事书

    专家您好,我们都在应用程序中使用可重用组件,或者我们开发了在多个地方经常使用的自定义组件,并将逻辑分开,因此每当我们更改业务逻辑时,它都会在使用它的任何地方反映出来。如果我说向我展示您开发的组件,您需要在一个组件中导入/实现它并运行应用程序,会发生什么,对吗?有什么方法可以让我在一个地方看到所有可重…

    2025年12月19日
    000
  • JavaScript 机器学习入门:TensorFlowjs 初学者指南

    机器学习 (ml) 迅速改变了软件开发的世界。直到最近,得益于 tensorflow 和 pytorch 等库,python 仍是 ml 领域的主导语言。但随着 tensorflow.js 的兴起,javascript 开发人员现在可以深入令人兴奋的机器学习世界,使用熟悉的语法直接在浏览器或 nod…

    2025年12月19日
    000
  • 如何使用免费词典API

    unsplash 上的封面照片由 christopher gower 您是否正在开发语言学习应用程序、写作助手或任何涉及单词并需要 api 来检索单词含义的项目?免费词典 api 提供了一种免费且易于访问的方式,将语言数据合并到您的作品中。本文档将向您展示如何开始。 在此 api 文档中: 关于免费…

    2025年12月19日
    000
  • JavaScript 是同步还是异步,是单线程还是多线程? JavaScript代码是如何执行的?

    javascript 是一种同步、单线程语言,一次只能执行一个命令。仅当当前行执行完毕后,才会移至下一行。但是,javascript 可以使用事件循环、promises、async/await 和回调队列执行异步操作(javascript 默认情况下是同步的)。 javascript 代码是如何执行…

    2025年12月19日
    000
  • 如何使用 Tailwind CSS 和 JavaScript 创建虚拟键盘

    大家周一快乐!今天,我们将深入研究使用 Tailwind CSS 和 JavaScript 构建虚拟键盘。这个项目是探索 JavaScript 并了解如何应用它来创建虚拟键盘的一种有趣且实用的方式。 什么是虚拟键盘? 虚拟键盘是物理键盘的基于软件的替代品。它使用户能够在计算机或移动设备上打字,而无需…

    2025年12月19日
    000
  • React JSX 如何在幕后转换为 JavaScript

    当你编写 react 时,你会经常看到 jsx——一种在 javascript 代码中看起来像 html 的语法。但你有没有想过这段代码在浏览器中是如何运行的? 神奇之处在于:jsx 不是有效的 javascript!浏览器无法直接理解它。在幕后,像 babel 这样的工具介入将 jsx 转换(或“…

    2025年12月19日
    000
  • 我用 ays 构建了一个小反馈工具

    大家好, 首先,讲一些背景故事。我今年 18 岁,刚刚借助 Next.js (TS)、shadcn/ui 和 Supabase 构建了我的第一个 SaaS。这就是所谓的情怀 我想从一个简单的工具开始,它可能对独立黑客、开发人员和小型初创公司有用,可以收集早期用户反馈,以决定还要构建什么并解决任何问题…

    2025年12月19日
    000
  • 开发人员如何构建实时 Web 应用程序?

    在不断发展的技术世界中,实时 Web 应用程序已成为寻求增强用户参与度和简化沟通的企业的强大解决方案。这些应用程序提供即时更新和交互,使其在消息传递、游戏和电子商务等领域至关重要。对于开发人员来说,尤其是那些澳大利亚开发人员,了解构建实时应用程序的细微差别至关重要。本文将探讨创建实时 Web 应用程…

    2025年12月19日
    000
  • Cron 作业中聚合的力量和成本效益

    在开发我的 saas 产品时,我发现,对于 10k 用户,您每天需要 10,001 次查询,并定期进行数据库查询来重置积分或免费提示。通过智能聚合,无论您有 10k 还是 100k 用户,您都只需要 2 次查询! 首先,让我给您一些 mongodb 生产数据库的成本审查(10k 和 1 年): 正常…

    2025年12月19日
    000
  • React 设计模式~容器组件/不受控制的受控组件~

    不受控制的组件 这种模式意味着 react 不控制表单数据,dom 保存表单状态。 访问 dom 时,必须使用 useref 钩子设置 ref 属性。 ・src/components/uncontrol-form.jsx import react from “react”;export const …

    2025年12月19日
    000
  • 克隆 Netflix 以提升您的前端技能

    作为一名主要专注于后端的开发人员,我一直觉得我的前端技能需要一些改进。为了测试这一点,我决定通过使用 vue.js 3 和 vite 构建 netflix 克隆来挑战自己。在这篇文章中,我将分解项目结构、关键组件,并分享我的学习经验。 项目概况 目标是创建一个模仿 netflix 用户界面核心功能的…

    2025年12月19日 好文分享
    000
  • 为多租户应用程序实施 ASPNET Identity:最佳实践

    构建多租户应用程序带来了独特的挑战,特别是在管理跨多个租户的用户身份验证和授权时。在本文中,我将引导您了解如何在多租户环境中实现 asp.net identity,同时遵循最佳实践以确保可扩展性、安全性和可维护性。 什么是多租户应用程序? 多租户应用程序允许多个组织(租户)使用应用程序的同一实例,每…

    2025年12月19日
    000
  • 使用 Bash 脚本简化您的日常任务:实用指南

    Bash 脚本对于在计算机上自动执行日常操作和任务非常有用。以下是一些可以使用 Bash 脚本自动执行的常见任务示例: 文件管理: 根据特定模式一次重命名多个文件。根据特定条件移动、复制或删除文件和目录。根据文件类型或元数据将文件 https://moolah777.net/download/ 分类…

    2025年12月19日
    000
  • 了解 JavaScript 事件循环:初学者指南

    事件循环是 JavaScript 运行时环境的核心组件,对于执行异步任务至关重要。它持续监控两个主要结构:调用堆栈和事件队列。 调用堆栈 调用堆栈是一种后进先出(LIFO)数据结构,用于存储当前正在执行的函数。当一个函数被调用时,它被添加到堆栈的顶部。一旦函数完成,它就会从堆栈中删除。 网络 API…

    2025年12月19日
    000
  • 什么是尖叫建筑?

    尖叫架构是由著名软件开发人员和思想领袖 robert c. martin(通常被称为“bob 叔叔”)提出的概念。这个术语可能听起来非常规,但它代表了软件设计中的一个强大原则,专注于使系统架构反映应用程序的主要关注点和用例。简而言之,您的软件架构应该“尖叫”其意图和目的。 在这份综合指南中,我们将探…

    2025年12月19日
    000
  • 起重面试问答

    1. javascript 中什么是提升? 答案: 提升是执行上下文创建阶段为变量和函数分配内存的过程。在此过程中,为变量分配了内存,并为变量分配了值 undefined。对于函数,整个函数定义存储在内存中的特定地址,并且对其的引用放置在该特定执行上下文中的堆栈上。 2. 变量提升和函数提升有什么区…

    2025年12月19日
    000
  • 如何使用 Tailwind CSS 设置 os Nextjs

    要使用 tailwind css 设置 next.js,请按照以下步骤操作: 第 1 步:创建一个新的 next.js 项目 如果您尚未创建 next.js 项目,您可以使用 create-next-app 创建一个项目。 npx create-next-app@latest my-next-app…

    2025年12月19日
    000

发表回复

登录后才能评论
关注微信