Задать вопрос
takovoy
@takovoy
web developer

Как отрисовать векторный пузырь?

Подкиньте литературки по векторной графике.
Хочу отрисовать неравномерную окружность по контрольным точкам. В принципе алгоритм скорее всего должен основываться на кривых безье, но непонятно как это сделать, хочется почитать дополнительных материалов на эту тему.
  • Вопрос задан
  • 196 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
Прежде чем отрисовать неравномерную окружность, нужно выработать для себя определение неравномерной окружности. Лично я о такой не слышал.

Допустим, под неравномерной окружностью вы понимаете эллипс. У эллипса есть уравнение, которое определяет множество точек эллипса. С помощью этого уравнения можно определить, какая точка принадлежит эллипсу, а какая - нет (соответственно, какие точки закрашивать цветом контура, а какие - нет).

На практике не всегда удобно проходить по всему множеству точек и проверять принадлежность каждой из них к эллипсу. Бывает, что проще перевести уравнения кривой в параметрический вид, и вычислять значения точек для некоторого набора дискретных значений параметра. Вот параметрическое уравнение эллипса:
https://wikimedia.org/api/rest_v1/media/math/rende...
в котором параметр t это угол между осью абсцисс и лучом, проходящим через центр координат и некоторую точку на эллипсе (при этом мы условимся, что центр эллипса совпадает с центром координат).

Таким образом, меняя значения t с 0 до 2*PI, мы получим множество пар (x, y) - это как раз и есть те точки, которые следует закрасить.

Попытавшись реализовать эту идею, вы вероятно, спросите - с каким шагом изменять параметр t. Это хороший вопрос и ответ на него зависит от вашей задачи и от того, насколько точно вы желаете нарисовать эллипс. Кроме того, если вы будете рисовать отдельные точки, как написано выше, то даже при относительно небольшом шаге у вас не будет получаться непрерывная линия. Уменьшая шаг параметра, вы рано или поздно добьетесь непрерывно выглядящей линии, однако это может значительно увеличить время отрисовки. В качестве простой оптимизации, можете вместо отдельных точек рисовать линии между двумя последовательными точками. Тогда, вместо эллипса вы, фактически, будете рисовать многоугольник. Однако, с увеличением числа точек (т.е. с уменьшением шага параметра t), он все более будет похож на эллипс.

Это самое простое, с чего вы можете начать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы