我写了一段代码来生成所有给定点的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();
}
}
================================
答案 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)