使用 p5.js 在 Javascript 中的 2 个角度之间旋转图像
Rotating Image between 2 angles in Javascript using p5.js
我想在 cos(20)
和 -cos(20)
之间旋转我的图像,动画流畅。
树是用branch()
函数递归完成的。我不知道如何用循环来做。是否有内置函数或特定算法来执行此操作?
let angles = 0;
var strokeValue = 1;
function setup() {
const canvas = createCanvas(540, 400);
frameRate(8);
}
function draw() {
background(220);
angle = PI/8;
translate(250, height);
// I think the rotate function should be here
branch(90);
}
function branch(length) {
strokeWeight(strokeValue);
line(1, 1, 1, -length);
translate(0, -length);
if (length > 4) {
//Right branches
push();
rotate(angle);
branch(length * 0.72);
pop();
// left branches
push();
rotate(-angle);
branch(length * 0.72);
pop();
push();
// middle
rotate(-angle * 0.2);
branch(length * 0.3);
pop();
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.0/p5.min.js"></script>
我试过了,虽然我不确定这是你要求的,所以请随时发表评论。
let angles = 0;
var strokeValue = 1;
function setup() {
const canvas = createCanvas(540, 400);
frameRate(30);
}
function draw() {
background(220);
angle = PI/8;
translate(250, height);
// I think the rotate function should be here
rotate(cos(map(frameCount / 10,0,100,-20,20)));
branch(90);
}
function branch(length) {
strokeWeight(strokeValue);
line(1, 1, 1, -length);
translate(0, -length);
if (length > 4) {
//Right branches
push();
rotate(angle);
branch(length * 0.72);
pop();
// left branches
push();
rotate(-angle);
branch(length * 0.72);
pop();
push();
// middle
rotate(-angle * 0.2);
branch(length * 0.3);
pop();
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.0/p5.min.js"></script>
我想在 cos(20)
和 -cos(20)
之间旋转我的图像,动画流畅。
树是用branch()
函数递归完成的。我不知道如何用循环来做。是否有内置函数或特定算法来执行此操作?
let angles = 0;
var strokeValue = 1;
function setup() {
const canvas = createCanvas(540, 400);
frameRate(8);
}
function draw() {
background(220);
angle = PI/8;
translate(250, height);
// I think the rotate function should be here
branch(90);
}
function branch(length) {
strokeWeight(strokeValue);
line(1, 1, 1, -length);
translate(0, -length);
if (length > 4) {
//Right branches
push();
rotate(angle);
branch(length * 0.72);
pop();
// left branches
push();
rotate(-angle);
branch(length * 0.72);
pop();
push();
// middle
rotate(-angle * 0.2);
branch(length * 0.3);
pop();
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.0/p5.min.js"></script>
我试过了,虽然我不确定这是你要求的,所以请随时发表评论。
let angles = 0;
var strokeValue = 1;
function setup() {
const canvas = createCanvas(540, 400);
frameRate(30);
}
function draw() {
background(220);
angle = PI/8;
translate(250, height);
// I think the rotate function should be here
rotate(cos(map(frameCount / 10,0,100,-20,20)));
branch(90);
}
function branch(length) {
strokeWeight(strokeValue);
line(1, 1, 1, -length);
translate(0, -length);
if (length > 4) {
//Right branches
push();
rotate(angle);
branch(length * 0.72);
pop();
// left branches
push();
rotate(-angle);
branch(length * 0.72);
pop();
push();
// middle
rotate(-angle * 0.2);
branch(length * 0.3);
pop();
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.0/p5.min.js"></script>