以角度绘制线条 - 处理

时间:2014-02-05 04:26:02

标签: rotation drawing line processing

如何使用处理相互以30度绘制线条?我已经阅读了2D-Transformation页面,但我不想旋转网格,我只想绘制彼此成30度的线条。我该怎么做?

我在下面附上一张示例图片,抱歉用油漆画出来很糟糕(不想使用加工),我该怎么办呢?

enter image description here

2 个答案:

答案 0 :(得分:1)

使用简单的trig可能吗?

void setup() {
  size(400, 400);
  PVector center = new PVector(width/2, height/2);
  for (int i = 360; i >= 180; i-=30) {
    float x = center.x + cos(radians(i))*50;
    float y = center.y + sin(radians(i))*50;
    line(center.x, center.y, x, y);
  }
}

答案 1 :(得分:0)

以下程序生成随机单位向量输入并返回输出向量,顺时针旋转 outputShift 弧度。如果你想逆时针旋转,只需使用负值。

PVector input, output;
float inputAngle, outputShift, radius;

void setup () {
  size(500, 500);
  load();
}

void draw () {
  background(255);

  translate(width/2, height/2);

  ellipse (0, 0, radius*2, radius*2);

  line(0, 0, input.x, input.y);
  line(0, 0, output.x, output.y);
}

void load () {
  input = PVector.random2D();

  inputAngle = atan2(input.y, input.x);
  outputShift = PI/6; 

  output = new PVector (
  cos(inputAngle+outputShift), 
  sin(inputAngle+outputShift)
    );

  radius = 200;

  input.setMag(radius);
  output.setMag(radius);
}

void keyReleased () {
  load();
}