gpt4 book ai didi

java - 在处理和理解代码中创建可视化

转载 作者:行者123 更新时间:2023-11-29 08:20:45 24 4
gpt4 key购买 nike

我正在尝试主要用于创建实时视觉效果的创意编码。我最近偶然发现了这个很棒的网站 https://www.openprocessing.org/人们可以在那里分享他们的创作。

我在下面附上了用于创建两个移动圆圈的代码,但我无法理解创建者是如何这样做的,如果有人能向我解释 for 循环的工作原理以及 x += 的工作原理0.006; y += 0.006;如果 (x > TWO_PI) {x = 0;} 部分有效,我们将不胜感激。 sincos 和 Two_PI 函数的使用让我感到困惑。这是原始代码的链接:

https://www.openprocessing.org/sketch/467333

//comment
float x = 0;
float xx = 0;
float y = 0;
float yy = 0;
float sizecircle = 250;

void setup() {
size (800, 650);
frameRate (60);
strokeWeight (1);
stroke (223, 170, 22);
}

void draw() {
background (51, 51, 51);

for (float i = 0; i < TWO_PI; i += TWO_PI/100) {
line (350 + sin(x+i) * sizecircle, 275 + cos(y+i) * sizecircle, 450 + cos(xx+i) * sizecircle, 375 + sin(yy+i) * sizecircle);
}

x += 0.006;
y += 0.006;
if (x > TWO_PI) {
x = 0;
}
if (y > TWO_PI) {
y = 0;
}

xx += 0.002;
yy += 0.002;
if (xx > TWO_PI) {
xx = 0;
}
if (yy > TWO_PI) {
yy = 0;
}
}

最佳答案

sin 的角度单位和 cosRadian . 360°是2*PI,这就是TWO_PI的原因。 变量 xyxxyy 递增 0.0 到 2*PI。如果它们达到 2*PI,它们将再次从 0.0 开始。

使用以下代码将从中心点 (cx, cy) 到半径为 r 的圆的 100 个点绘制直线。

for (float i = 0; i < TWO_PI; i += TWO_PI/100) {  
line(cx, cy, cx + cos(i)*r, cy + sin(i)*r);
}

问题代码中的技巧是线连接围绕 2 个圆的点,这些圆的旋转方向相反:

line(cx1 + sin(i)*r, cy1 + cos(i)*r,
cx2 + cos(i)*r, cy2 + sin(i)*r);

请注意,与终点相比,sincos 的顺序交换了起点,这导致圆圈旋转方向相反。< br/>不同的旋转速度是由不同的常数0.0060.002引起的。


顺便说一句,代码可以简化,因为x == yxx == yy。使用 [0, TWO_PI] 范围内的 2 个角度就足够了:

float a1 = 0;
float a2 = 0;
float sizecircle = 250;
void draw() {
background (51, 51, 51);

for (float i = 0; i < TWO_PI; i += TWO_PI/100) {
line (350 + sin(a1+i)*sizecircle, 275 + cos(a1+i)*sizecircle,
450 + cos(a2+i)*sizecircle, 375 + sin(a2+i)*sizecircle);
}

a1 += 0.006;
a2 += 0.002;
}

由于 sin(x) == sin(x + TWO_PI*n)cos(x) == cos(x + TWO_PI*n)(n 是一个整数),没有必要“重置”角度。

关于java - 在处理和理解代码中创建可视化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58821003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com