如何获得曲线上任意点的坐标值?

时间:2016-03-25 04:26:11

标签: processing

我写了一段代码来生成所有给定点的curve,代码如下。它在processing PDE中编码并基于curveVertex()函数。 有没有办法让coordinate value(x, y)获得此curve的任何一点?

int[] lineData = new int[10];

void setup() {
  size(800, 600);
  intiate();
}

void intiate() {
  for (int i = 0; i < lineData.length; i ++) {
  lineData[i] = int(random(100, 600));
  }
}

void draw() {
  background(255);  
  translate(100,0);
  beginShape();
  noFill();
  curveVertex(0, lineData[0]);
  for (int i = 0; i < lineData.length; i ++) {
  strokeWeight(1);
  curveVertex(i*60, lineData[i]);
 }
 curveVertex((lineData.length-1)*60, lineData[lineData.length-1]);
 endShape();

 for (int i = 0; i < lineData.length; i ++) {
   strokeWeight(5);
   point(i*60, lineData[i]);
  }
}

void keyPressed() {
  if (key == 'r') {
    intiate();
  }
}

================================

2 个答案:

答案 0 :(得分:0)

如果您想知道正在绘制的点的位置,您应该使用curvePoint()函数。

curvePoint()函数不会绘制点,它会返回它们的位置。来自参考文献:

  

curvePoint()

     

评估点a,b,c,d的点t处的曲线。参数t   可以从0(曲线的开始)和1(结束时)的范围   曲线)。 a和d是曲线上的点,b和c是对照   点。这可以使用x坐标和第二次使用一次   使用y坐标获取曲线在t处的位置。

     

<强>参数

a float: coordinate of first point on the curve
b float: coordinate of second point on the curve
c float: coordinate of third point on the curve
d float: coordinate of fourth point on the curve
t float: value between 0 and 1
     

示例

noFill();
curve(5, 26, 5, 26, 73, 24, 73, 61);
curve(5, 26, 73, 24, 73, 61, 15, 65);
fill(255);
ellipseMode(CENTER);
int steps = 6;
for (int i = 0; i <= steps; i++) {
  float t = i / float(steps);
  float x = curvePoint(5, 5, 73, 73, t);
  float y = curvePoint(26, 26, 24, 61, t);
  ellipse(x, y, 5, 5);
  x = curvePoint(5, 73, 73, 15, t);
  y = curvePoint(26, 24, 61, 65, t);
  ellipse(x, y, 5, 5);
}

答案 1 :(得分:0)