【问题标题】:How to make a spiral rotate?如何使螺旋旋转?
【发布时间】:2017-11-07 20:15:02
【问题描述】:

我已经成功地使用线条编码了一个静态螺旋,现在我应该让螺旋从一个帧旋转到另一个帧。我尝试增加用于每一帧线末端的x 和y 位置的角度,但螺旋线根本没有移动。

void draw() {
    for (int i = 0; i < 15 * NUM_LINES; i++) {
        float lineEndX = width / 2 + radius * cos(angle + startAngle);
        float lineEndY = height / 2 + radius * sin(angle + startAngle);
        line (lineStartX, lineStartY, lineEndX, lineEndY);
        lineStartX = lineEndX;
        lineStartY = lineEndY;

        radius = radius + 0.047;
        angle += 0.01 % (TWO_PI * NUM_TURNS);
    }
    startAngle += START_ANGLE_CHANGE;
    angle = 0;
}

【问题讨论】:

  • 使用的语言?使用了外部库/类? startAngle、angle和radius的类型是什么,line的功能是什么?
  • 它说处理,那是一种语言。
  • 请发minimal reproducible example 而不是断开连接的sn-p。
  • 我建议在循环开始时打印startAngle,以确保它是递增的。我怀疑它每次都重置为零。
  • @JamesK 我尝试了你的建议,实际上 startAngle 每一帧都会增加。

标签: rotation processing increment spiral


【解决方案1】:

将background(255); 添加到您的draw 函数中。还要在那里定义lineStartX、lineStartY 和radius,以便在每次调用函数时重置它们的值。

void draw() {
    background(255);
    float lineEndX = width / 2;
    float lineEndY = height / 2;
    float radius = 5;

    for (int i = 0; i < 15 * NUM_LINES; i++) {
        float lineEndX = width / 2 + radius * cos(angle + startAngle);
        float lineEndY = height / 2 + radius * sin(angle + startAngle);
        line (lineStartX, lineStartY, lineEndX, lineEndY);
        lineStartX = lineEndX;
        lineStartY = lineEndY;

        radius = radius + 0.047;
        angle += 0.01 % (TWO_PI * NUM_TURNS);
    }
    startAngle += START_ANGLE_CHANGE;
    angle = 0;
}

Working example here.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 2023-03-28
    • 2010-11-21
    相关资源
    最近更新 更多