Примените знания, объясненные в https://pomax.github.io/bezierinfo/#abc, и вам будет хорошо идти. Вам нужно будет решить, какое значение времени имеет точка «где-то на кривой», а затем вы можете использовать формулу для отношения проекции, чтобы найти фактическую координату контрольной точки.
Однако при t=0.5
соотношение составляет всего 1: 1, поэтому все становится еще проще, потому что ваша точка проецируется на среднюю точку линии, которая соединяет эту первую и последнюю точку, а реальная контрольная точка находится на одинаковом расстоянии. «выше» вашей точки, так как точка находится над этой линией:
То есть вы просто вычисляете среднюю точку:
m =
x: (p1.x + p2.x) / 2
y: (p1.y + p2.y) / 2
и расстояние по осям x и y к средней точке от точки "p2 у вас есть":
d =
x: (p2.x - m.x)
y: (p2.y - m.y)
и тогда реальное p2
- это просто расстояние от "p2 у вас":
real2 =
x: p2.x + d.x
y: p2.y + d.y
Однако обратите внимание, что этот только работает для t = 0,5: и эта проецируемая точка на линии start--end
, и отношения расстояний будут (возможно, очень) разными для любого другого значения t
и Вы должны использовать формулу, о которой говорит праймер Безье.
Также обратите внимание, что то, что вы называете "пиком", ни в коем случае не гарантируется при t = 0,5 ... например, посмотрите на эту кривую:
Точка, которая помечена как принадлежащая t = 0.5, определенно не там, где вы бы сказали, что «пик» кривой (фактически, это ближе к t = 0.56), поэтому, если у вас есть только три точки, технически у вас всегда есть неполная информация, и вам нужно будет придумать какое-то правило для решения, как заполнить пропущенные биты. В этом случае «какое значение t я считаю своей точкой где-то на кривой?».