Я хочу сделать «именованную» кривую Безье. Я хочу, чтобы он назывался одним словом, поэтому мне не нужно беспокоиться о переносе слов.
Я делаю кривую Безье с помощью функции P5 bezier(sx,sy,c1x,c1y,c2x,c2y,ex,ey)
и хочу, чтобы в середине кривой Безье отображалась строка. Но я не знаю, как найти «середину» кривой.
Пока мой результат выглядит так
(Я не знаю, где начать решать эту проблему, поэтому я выбрал более простой способ печати текста в начале кривой):
Но я хочу, чтобы это выглядело так:
Это означает, что мне нужны координаты P1 и P2:
Извините за краску, но у меня еще нет своего кода. Как только у меня появятся руки, я добавлю это сюда.
Вот код, который рисует кривую:
let
b = dest.inTriangle.middle, // destination triangle
g = this.outTriangle.p3, // tip of out triangle
c = {x:b.x-g.x,y:b.y-g.y}, // distance between objects
r1 = {}, // bezier point 1
r2 = {}; // bezier point 2
if(c.x > 0){
// b is on left
r1 = {
x: g.x + c.x/2,
y: g.y
};
r2 = {
x: b.x - c.x/2,
y: b.y
};
}
else {
// b is on right
r1 = {
x: g.x - c.x/2,
y: g.y + c.y
};
r2 = {
x: b.x + c.x/2,
y: b.y - c.y
};
}
noFill();
stroke(0);
bezier(
g.x, g.y,
r1.x, r1.y,
r2.x, r2.y,
b.x, b.y
);
noStroke();
fill(0);
text(this.name, g.x, (g.y-this.h/2))