Рисование 2D-кривых на холсте Android?

Как мы можем рисовать такие 2D-кривые в Canvas?

введите здесь описание изображениявведите здесь описание изображения введите здесь описание изображения

Все подобные кривые имеют mathematical formula или fractals, но на холсте есть только некоторые методы для рисования простых фигур, таких как треугольник или прямоугольник. Я знаю, что большинство кривых можно разделить на более простые формы, например, с помощью кривой сердца, но есть ли более простой способ рисовать 2D-кривые с помощью холста?


person hasanghaforian    schedule 20.12.2012    source источник
comment
Разве вы не можете просто рисовать точки на холсте, то есть Canvas.drawPoints(...), если нет другого требования, о котором вы не упоминаете.   -  person Morrison Chang    schedule 21.12.2012
comment
@MorrisonChang кажется, что это не лучший способ рисовать фракталы. Вы согласны?   -  person hasanghaforian    schedule 21.12.2012


Ответы (3)


Если вы посмотрите, как рисовать 2D-кривые в целом, вы будете рисовать либо точки, либо линии, и это только выглядит гладко.

Ваш вопрос имеет две параметрические формы и одну фрактальную форму. Все можно нарисовать линиями и точками. Параметрические формы могут быть выполнены непосредственно с помощью алгоритмов в вашем вопросе или могут быть преобразованы в более общие, такие как кривая Безье, как упомянуто @leenephi.

В большинстве случаев уравнения/алгоритмы для создания фракталов используют линии, снежинки Коха, или точки, множество Мандельброта. Если вы действительно понимаете, как их генерировать, вы увидите, что фракталы — это не столько рисование «кривой», сколько процесс (рекурсия) и результаты (самоподобие).

person Morrison Chang    schedule 20.12.2012

Используя объект Path, вы можете сделать несколько более изящных линий и кривых на холсте. Просто случайно нашел эти два вопроса, касающиеся тех; Я надеюсь, что они могут указать вам правильное направление, поскольку я лично не использовал их.

Нарисуйте идеальную кривую, соединяющую три точки

Кривая Безье и холст

person leenephi    schedule 20.12.2012
comment
Исправление: я довольно часто использовал объект Path, но не для кривых, вот что я имел в виду. :) Path довольно крут для создания более сложных линий по сравнению с очень простым холстом.DrawLine(...) - person leenephi; 21.12.2012
comment
кажется, что это не лучший способ рисовать фракталы. Вы согласны? - person hasanghaforian; 21.12.2012
comment
Как именно вы планируете рисовать фракталы? Если вы берете только точки данных, то предложение Моррисона выше может быть лучшим. Вы ищете движение в реальном времени или анимацию или просто фрактальное изображение? Если первое, вам может понадобиться рассмотреть холст в SurfaceView или OpenGL. Если последнее, я не понимаю, почему Path не будет работать, потому что вы можете добавить несколько инструкций пути и кривой в один объект Path. - person leenephi; 21.12.2012

Вы должны аппроксимировать кривую более простыми примитивами, например, короткими отрезками.

person Henry    schedule 20.12.2012