3 недели назад Я задал вопрос о том, как сохранить соотношение для кривой Безье при изменении точек X.«MBo» помогает мне, но возникла проблема, и он порекомендовал мне создать новую тему.
Проблема в том, что P0.Y и P2.Y могут отличаться и, следовательно, кривая выглядит как «булочка»".
Теперь у меня есть это и при изменении P0.X и P2.X я хочу сохранить соотношение, которое работает нормально: https://www.w3schools.com/code/tryit.asp?filename=FXDIZMBCCYNA
При измененииP0.Y, например, выглядит как «бролли» (P1.X не точно посередине): https://www.w3schools.com/code/tryit.asp?filename=FXDJ733KQZM4
ОК, я пытаюсьЧтобы объяснить это более подробно.
У меня есть четыре точки (X1, Y1, X2, Y2) и я хочу кривую Безье на основе точек так: P0.X находится на X1, P1.X междуX1 и X2 и P2.X на X2.P0.Y находится на Y1, а P2.Y на Y2.
Когда у меня теперь есть это:
ctx.moveTo(0, 50);
ctx.quadraticCurveTo(100, 25, 200, 50);
И меняя положение x1 и x2, я сохраняю соотношение сверху:
ctx.moveTo(0, 50);
ctx.quadraticCurveTo(25, 44, 50, 50);
Хорошо, пока эта часть работает нормально.Теперь моя проблема в том, что когда я изменяю Y1 или Y2, это выглядит как «сумасшедший», и кривая не круглая, как выше, потому что P1.X не точно посередине.
ctx.moveTo(0, 250);
ctx.quadraticCurveTo(100, 25, 200, 50);
Где бы это ни понравилось: