Как преобразовать android.graphics.Path.arcTo (oval, startAngle, sweepAngle) в android.graphics.Path.cubicTo ()

Я много искал об этом. Например, как создать круг с кривыми Безье, как наилучшим образом аппроксимировать геометрическую дугу с кривой Безье и т. д. Но все это кажется мне произвольным приближением дуги к кривой Безье. Спасибо

Математически невозможно построить дугу окружности с кривой Безье, независимо от того, насколько высокого порядка вы выберете кривую (потому что функция синоида не может быть выражена в виде конечного полинома). Так что это не «произвольно»: если вам нужно преобразовать дугу в кривую Безье, вы буквально имеют, чтобы аппроксимировать первое с помощью второго. Итак, вы получаете нужно читать о таких вещах.

Mike 'Pomax' Kamermans 20.03.2018 00:38

@ Mike'Pomax'Kamermans, спасибо, твоя статья отличная, благодарная. Я прошел через это. Будет действительно полезно, если вы поместите один пример здесь или там (приближение дуги к кубической кривой Безье). Я все еще не решаюсь писать код, поскольку моя математика не так хороша, как нужно :-).

CodeWithVikas 02.04.2018 14:29

@ Mike'Pomax'Kamermans в нижеследующем разделе статьи, у меня есть одно сомнение pomax.github.io/bezierinfo/#aligning, как вы получили выражение после поворота (перевод мне довольно ясно, что мы сделали минус с тем же значением). Но с какой величиной мы сделали ротацию и как

CodeWithVikas 02.04.2018 14:35

после перевода вы можете вычислить угол, который ваша базовая линия (начало - конец) образует с осью x, используя функцию atan2, которая присутствует практически во всех языках программирования. Если этот угол равен a, то теперь вы можете повернуть все точки вокруг (0,0) с помощью -a, который поворачивает все так, чтобы оно выровнялось с осью x. Вы не имеют для этого, но это делает математику невероятно сложной. Полегче.

Mike 'Pomax' Kamermans 02.04.2018 19:15
1
4
201
0

Другие вопросы по теме