开始第一张“码绘”——使用P5.JS画出旋转的爱心

2023-10-27

**

用P5.JS画出旋转的爱心

**

首先我们来看看想实现的原图:

在这里插入图片描述

对这张图片进行观察可以发现图中一共有16颗相同的爱心在旋转。

我们拿出其中一个爱心进行分析。

在这里插入图片描述

我们可以发现,这个爱心是由27个正方体构成。

此处应该注意的是:

①是正方体,而不是正方形,应该用box()函数而不是rect()函数,不然无法实现旋转效果;

②选定好第三行第四个正方体作为中心,其他的正方体由第三行的第四个正方体translate()得到;

③因为原图是由16个爱心组成的,如果直接计算坐标绘图,虽然可以做到,但太过繁琐。
在这里,我们设定几个函数参数来简化后面的画图步骤。
(BoxSize,posX,posY,posZ,r,g,b)

BoxSize —— 组成爱心的方块的大小
posX,posY,posZ —— 中心方块与画布中心的偏移量
r,g,b —— 方块颜色的RGB值

将构造一个爱心的方法写成一个函数如下:

function drawHeart(BoxSize,posX,posY,posZ,r,g,b,)
{
   
fill(r,g,b);

translate(posX,posY,posZ);//第三行第四个正方体
box(BoxSize);//translate()函数使用的是偏移量而不是坐标值!
translate(-(10/9)*BoxSize,0,0);//每两个方块间应该有些间距,距离产生美!
box(BoxSize);
translate(-(10/9)*BoxSize,0,0);
box(BoxSize);
translate(-(10/9)*BoxSize,0,0);
box(BoxSize);
translate(4*(10/9)*BoxSize,0,0);
box(BoxSize);
translate((10/9)*BoxSize,0,0);
box(BoxSize);
translate((10/9)*BoxSize,0,0);
box(BoxSize);

translate(0,-(10/9)*BoxSize,0);//第二行
box(BoxSize);
translate(-(10/9)*BoxSize,0,0);
box(BoxSize);
translate(-(10/9)*BoxSize,0,0);
box(BoxSize);
translate(-(10/9)*BoxSize,0,0);
box(BoxSize);
translate(-(10/9)*BoxSize,0,0);
box(BoxSize);
translate(-(10/9)*BoxSize,0,0);
box(BoxSize);
translate(-(10/9)*BoxSize,0,0);
box(BoxSize);

translate((10/9)*BoxSize,-(10/9)*BoxSize,0);//第一行
box(BoxSize);
translate((10/9)*BoxSize,0,0);
box(BoxSize);
translate(2*(10/9)*BoxSize,0,0);
box(BoxSize);
translate((10/9)*BoxSize,0,0);
box(BoxSize);

translate(0,3*(10/9)*BoxSize,0);//第四行
box(BoxSize);
translate(-(10/9)*BoxSize,0,0);
box(BoxSize);
translate(-(10/9)*BoxSize,0,0);
box(BoxSize);
translate(-(10/9)*BoxSize,0,0);
box(BoxSize);
translate(-(10/9)*BoxSize,0,0);
box(BoxSize);

translate((10/9)*BoxSize,(10/9)*BoxSize,0);//第五行
box(BoxSize);
translate((10/9)*BoxSize,0,0);
box(BoxSize);
translate((10/9)*BoxSize,0,0);
box(BoxSize);

translate(-(10/9)*BoxSize,(10/9)*BoxSize,0);//第六行
box(BoxSize);
}

运行一下,画出来的效果如下图:

在这里插入图片描述

通过在draw()中反复调用画出16个爱心来。

function draw() {
   
  // put drawing code here
background(0);

drawHeart(13,-width/2+80,-height/2+80,0,255,64,64);//这里的posX和posY都是根据效果写的,暂时还没明白是怎么一回事
drawHeart(13,140,-42.5,0,255,140,105);
drawHeart(13,140,-42.5,0,255,64,64);
drawHeart(13,140,-42.5,0,255,140
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

开始第一张“码绘”——使用P5.JS画出旋转的爱心 的相关文章

  • 用P5.js实现一个动态的绘画系统

    摘要 通过一段时间的学习 我发现码绘的可能性比我想象的要更大 我们可以用码绘实现很多手绘很难达到的效果 比如创作一幅会动的 能进行交互的画作 如何通过类似画笔的东西在屏幕上创作出时刻在改变的 并且我们可以进行实时修改的像动画一样的作品 这就
  • 用P5 JS绘制动态绚丽烟花——动态篇

    上一节我们探究了绘制静态图像手绘与码绘的差异 但是万事万物 变化万千 有很多东西仅仅用静态是无法描述的 正如恩格斯所言 整个自然界 从最小的东西到最大的东西 从沙粒到太阳 从原生生物到人 都处于永恒的产生和消灭中 处于不断的流动中 处于无休
  • p5.j​​s 中的碰撞处理

    我一直在使用 p5 js 并且已经弄清楚如何让对象来检测碰撞 但我对如何处理这些碰撞感到非常困惑 我尝试将玩家速度设置为 0 但随后玩家卡住了 我也尝试过将碰撞分开到每一侧 但这也不起作用 这是我的带有碰撞函数的玩家构造函数 class P
  • p5.j​​s createCanvas 未定义错误。未捕获的引用错误

    Problem 我正在尝试使用p5 js在我的简单应用程序中 并因此包含它 我尝试过的 如果我放置一个调试器并查看控制台 我确实会得到以下功能p5Color 例如 和其他 并且脚本会很好地加载到页面上 除了createCanvas不会自动完
  • 在 P5.js 中旋转网格内的对象

    我正在尝试使用合适的 OOP 方法来让对象在网格单元格内单独旋转 我当前的结果是围绕 0 0 参考点旋转所有对象 而不是每个对象在其自己的单元格内旋转 当然 需要的是一个正确的翻译函数 但是当我尝试在innerSquare函数中应用它时tr
  • 如何在p5.js中识别圆弧内的光标? [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我正在制作一个饼图 希望当光标移动到我的分段上时突出显示 然后在用户单击分段时展开 我看过很多关于如何让圆形或方形识别光标在其空间内的教程 但我无法理解任何可以根据输入值改变大小的弧线
  • 如何在javascript中获取频率值?

    我是一名意大利学生 我正在使用 p5 的库来创建一个网络吉他调音器 我想知道是否有办法获取麦克风输入的频率 图书馆链接 https p5js org reference libraries p5 sound https p5js org r
  • P5.js curveVertex 函数在某个点闭合

    我创建了一个噪声函数 它与一个圆函数配对 创建一个看起来很酷的随机噪声圆 我的问题是curveVertex除了第一个和最后一个顶点的连接之外 P5 js 中的函数工作正常 我的代码是 let start Array 50 fill 0 do
  • p5.j​​s - 随机()、高度和宽度未定义?

    我正在尝试使用 p5 js 让球在画布上弹跳 但似乎width height and random 没有定义 这是我的全部代码 function setup createCanvas 640 480 background 240 var d
  • p5.j​​s 中的上下移动(并使用 WASD)

    在p5中如何使用键盘让角色移动 我的意思是 不仅仅是向左和向右 我还想使用 WASD 键 我用过这个 形状作为占位符 https editor p5js org TheDiamondfinderYT present 8ZqV2LsVB ht
  • 如何在合并排序期间“暂停”以可视化 JS p5js

    我正在使用 p5 js 开发排序可视化工具 我需要知道是否可以减慢合并排序 以便可以更慢地绘制它 我目前正在尝试使用下面的睡眠功能来减慢它们的合并功能 但我得到 未捕获的类型错误 a slice 不是函数 我只是犯了一个愚蠢的错误 还是我错
  • python 中的 p5-js map() 函数

    python中有没有像p5 js的map 这样的函数 python 中的 map 根本不一样 据我了解 在 python 中 它对序列中的所有可迭代应用相同的函数 但我需要一些可以完成 p5 js 中的 map 函数功能的东西 感谢您的帮助
  • p5 使用十六进制字符串和 alpha 设置填充颜色

    我试图在 p5 js 中使用十六进制颜色值 但在使用它和同时使用 alpha 时遇到问题 我想用一个变量设置颜色 用另一个变量设置阿尔法 let myColor FF0000 let myAlpha 128 function setup c
  • 如何用圆圈替换光标,而不是在 p5.js 中将其绘制到画布上?

    问题 我正在尝试使用 p5 js 创建一个简单的绘图应用程序 我想在光标位置显示一个代表画笔大小的圆圈 而不是标准光标图像 可能的解决方案1 使用替换光标cursor p5 的原生函数 为什么它不起作用 The p5光标功能 https p
  • Angular 和 p5.js - p5.loadSound 不是函数

    当我想在我的 Angular 项目中使用 p5 js 时遇到问题 我使用 Angular CLI 将 p5 js 包含在我的 angular cli json file scripts node modules p5 lib p5 min
  • 为什么在处理.org java pdf 导出时只显示一个框?

    下面是我的代码 在运行时它显示了我想要的多个框 但是当我尝试导出时 它只在该帧位置显示一个框 我尝试在特定帧生成输出 但它有同样的问题 import processing pdf int ofs 500 boolean record voi
  • “未捕获的引用错误:窗口未定义”p5.js Web Worker

    我有一个 javascript 代码 我将网络工作者与 p5 js 库一起使用 它不允许我使用 p5 的任何功能 所以我必须使用importScripts p5 js 在使用 p5 的任何函数之前导入 p5 js 库的函数 onmessag
  • 在画布中的鼠标位置放大/缩小

    我正在尝试使用 p5 js 实现缩放功能 当前缩放级别以及 x 和 y 位置存储在controls view目的 默认位置或 0 0 位置位于左上角 问题是调整放大 缩小时的 x 和 y 位置值 以便无论视图的当前位置是什么 它都会停留在缩
  • 在 p5js 中渲染骨架 glb

    所以我有办法渲染模型将动画模型从 Three js 渲染到 p5 js https stackoverflow com questions 75715609 rendering an animated model from three js
  • 无法在 typeScript 和 Webpack 中使用 p5.js

    我有一个使用图书馆的项目p5 js https github com processing p5 js Details 我的 Webpack 配置是 const path require path module exports entry

随机推荐

  • 长城网络靶场第三题

    关卡描述 1 oa服务器的内网ip是多少 先进行ip统计 开始逐渐查看前面几个ip 基本上都是b s 所以大概率是http 过滤一下ip 第一个ip好像和oa没啥关系 第二个ip一点开就是 oa 应该就是他了 关卡描述 2 黑客的攻击ip是
  • w7系统如何关闭高级文字服务器,Win7系统怎么取消切换大小写时出现提示?

    Win7系统用户在工作中使用键盘切换大小写输入时 总会弹跳出系统的提示窗口 很多用户觉得非常烦 那么Win7系统应该怎么取消切换大小写时出现的提示呢 接下来下面请看Win7系统切换大小写时出现的提示的具体解决方法 解决方法 1 首先 在桌面
  • 在Vue中获取DOM元素的实际宽高

    最近使用 D3 js 开发可视化图表 因为移动端做了 rem 适配 所以需要动态计算获取图表容器的宽高 其中涉及到一些原生DOM API的使用 避免遗忘这里总结一下 一 获取元素 在 Vue 中可以使用 ref 来获取一个真实的 DOM 元
  • 电商峰值系统架构设计--转载

    1 1 系统架构设计目录 摘要 双11来临之际 程序员 以 电商峰值系统架构设计 为主题 力邀京东 当当 小米 1号店 海尔商城 唯品会 蘑菇街 麦包包等电商企业 及商派 基调网络等服务公司 分享电商峰值系统架构设计的最佳技术实践 自200
  • SSH_Unable to negotiate with ... port ..: nomatching host host key type found. Their offer:ssh-rsa

    终端远程登录ssh时 提示如下错误 Unable to negotiate with 192 168 1 228 port 22 nomatching host host key type found Their offer ssh rsa
  • 常见的损失函数(loss function)总结

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 导读 本文总结了常见的八种损失函数的优缺点 包括 0 1损失函数 绝对值损失函数 log对数损失函数 平方损失函数 指数损失函数 Hinge 损失函数 感知损失函数 交叉
  • 解答:pytorch 通过索引赋值后 梯度还能正常反向传播吗

    先上测试代码 if name main scene graph token tensor1 torch rand 4 4 tensor1 requires grad True tensor2 torch rand 4 tensor2 req
  • labelme标注不同物体显示不同颜色以及批量转换

    最近在使用labelme标注数据时遇到一些问题 如上图中 蓝色分别为crack person dog三类 正常应该是3种不同颜色 解决方案 1 labelme版本 2 下载labelme后进行文件修改 由于博主想要的是rgb三通道的彩色图
  • pytorch量化库使用(1)

    量化简介 量化是指以低于浮点精度的位宽执行计算和存储张量的技术 量化模型以降低的精度而不是全精度 浮点 值对张量执行部分或全部运算 这允许更紧凑的模型表示以及在许多硬件平台上使用高性能矢量化操作 与典型的 FP32 模型相比 PyTorch
  • 容器技术之Chroot&Docker

    chroot 容器技术从1979年chroot的首次问世便已崭露头角 维基百科对chroot的定义如下 是在 Unix 和 Linux 系统的一个操作 针对正在运行的软件进程和它的子进程 改变它外显的根目录 一个运行在这个环境下 经由 ch
  • 清华梦的破碎--写给清华大学的退学申请

    注记 每个不是根据自己的爱好而是根据行业前景而选择互联网产业的学子都会遇到很多的困惑和迷茫 作为天才式的博士生王垠也曾遇到过很多类似的困境 读完这篇文章 感觉遇到不少的相同情况 或许这篇文章能够指引你不少的道路 故向你推荐这篇文章 清华梦的
  • 基于unapp的自定义picker组件

    基于unapp的自定义picker组件
  • 区块链在版权保护上有什么作用?

    我国在版权保护方面的制度和法律越来越完善 版权行业的规模也是不断扩大 虽然版权行业的确权的发展有一定的时间 但其还存在着一些问题 那目前比较前沿的区块链版权保护应用又能有效解决这些问题呢 根据腾讯研究员的数据 中国网络核心版权产业行业规模从
  • 【Java预科】CH02 常用快捷键和基本DOS命令

    上一课 MarkDown语法 常用快捷键 Tab键切换菜单键或空四个格子 shift键是功能键 ctrl键是控制键 alt键 具体使用 Ctrl C复制 Ctrl V粘贴 Ctrl A全选 Ctrl X剪切 Ctrl Z撤销 Ctrl A保
  • 无框架的底层代码实现普通RNN、LSTM的正反向传播过程及应用

    1 准备 首先导入所需要的包rnn utils py import numpy as np def softmax x e x np exp x np max x return e x e x sum axis 0 def sigmoid
  • 4小时入门深度学习+实操MMDetection 第二课

    视频 4小时入门深度学习 实操MMDetection 第二课 目标检测工具包 一完成目标检测 二完成实例分割 很方便可以进行模块替换 pytorch 4万多star 几行pathon API即可调用强大的检测能力 配置文件修改 可以训练自己
  • Linux命令行——touch命令详解

    1 命令功能 touch命令用于创建文件或修改文件 目录的时间戳 了解时间戳 可以查看Linux命令行 stat命令详解 2 语法格式 touch option file 3 参数选项 无选项 若文件不存在 则创建新的空文件 access
  • 【shell实战案例】批量注释nginx的重定向并进行文件对比

    业务背景 线上配置中nginx存在大量 return 301重定向的配置 根据必须注释 文件夹下有大量文件 每个文件都有很多行 由于登录服务器有点麻烦 希望通过shell脚本处理 如何注释 ls xargs I sed i 301 s 解释
  • 基于ESP8266的遥控小车

    如何操控小车 这个问题问的好 相信许多学习过单片机的小伙伴们都知道我们控制一个硬件的方法有很多种 例如红外遥控 蓝牙遥控等等 但是我们今天介绍的是用wifi和服务器进行遥控 那么wifi怎么控制我们的小车呢 其实原理与蓝牙相似 只不过esp
  • 开始第一张“码绘”——使用P5.JS画出旋转的爱心

    用P5 JS画出旋转的爱心 首先我们来看看想实现的原图 对这张图片进行观察可以发现图中一共有16颗相同的爱心在旋转 我们拿出其中一个爱心进行分析 我们可以发现 这个爱心是由27个正方体构成 此处应该注意的是 是正方体 而不是正方形 应该用b