gpt4 book ai didi

java - 如何从一组形成直线的点中获取曲线的控制点?

转载 作者:行者123 更新时间:2023-12-01 13:48:02 25 4
gpt4 key购买 nike

我有一组n个点组成一条线,但我想要一条曲线而不是一条线。为了在处理中做曲线,需要一些控制点,我想知道如何才能从 n 个点的集合中获取控制点。另外,我会拖动曲线,因此我认为我需要一直找到新的控制点?

最佳答案

好吧,您基本上可以解析坐标数组并使用它们在处理中创建 curveVertex() 形状,如下所示:

// create an array of coordinates in x, y, x, y... format
int[] points = {
34, 163,
67, 345,
474, 84,
682, 234,
495, 396,
174, 379,
275, 574
};

void setup() {
size(800, 600);
smooth();
noFill();
}

void draw() {
background(255);

draw_curve_from_points(points); // draw the curve
draw_handles_on_points(points, 6, 126); // draw the handles

}

// a function to draw the curve
void draw_curve_from_points(int[] _points) {
noFill();
stroke(0);
strokeWeight(1);

int len = _points.length;
beginShape();
curveVertex(_points[0], _points[1]); // the first point is duplicated to be used as control point
for (int i = 0; i < len; i +=2) {
curveVertex(_points[i], _points[i+1]);
}
curveVertex(_points[len-2], _points[len-1]); // idem for last point
endShape();
}

// draw handles on the points
void draw_handles_on_points(int[] _points, float _size, int _gray) {
int len = _points.length;
pushStyle();
noStroke();
fill(_gray);
for (int i = 0; i < len; i +=2) {
ellipse(_points[i], _points[i+1], _size, _size);
}
popStyle();
}

只需添加一些鼠标位置识别和鼠标交互即可拖动点。

关于java - 如何从一组形成直线的点中获取曲线的控制点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20197893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com