Вопрос

Я посмотрел на Этот пример с использованием PHP и GD кусочно-рендерировать спираль с небольшими дугами. То, что я хотел бы сделать, это сделать приближение к спирали, которая является максимально точной точностью.

Inkscape имеет А. Спиральный инструмент Это выглядит довольно хорошо, но я хотел бы проделать стиральное поколение программно (желательно в Python).

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

В этом случае качество рендеринга важнее времени рендеринга. Однако, оценка интеграла на каждом пикселе поражает меня как довольно неэффективно.

Обновлять: Я верю, что вопрос, который я должен спросить, это Вот этот (для которых ответы Yahoo не удалось).

Это было полезно?

Решение

Разве не было бы легче нарисовать кривую (сплайн?) И просто генерируйте много контрольных точек? Таким образом, вы бы подобрали существующий сглаживающий двигатель.

Править]: первое приближение к этому (сделано с TCL / TK, но код должен быть легко конвертировать) дает мне это:

# Make the list of spiral coordinates
set coords {}          
set theta 0; set r 10
set centerX 200; set centerY 150
# Go out 50 pixels per revolution
set pitch [expr {100.0 / 720.0}]
for {set i 0} {$i<720} {incr i} {
    lappend coords [expr { $centerX + $r*sin($theta) }] \
                   [expr { $centerY + $r*cos($theta) }]
    set r     [expr { $r + $pitch }]
    # Increment angle by one degree
    set theta [expr { $theta + 3.1415927/180 }]
}

# Display as a spline
pack [canvas .c -width 400 -height 300]
.c create line $coords -tag spiral -smooth 1

Я не предпринял никаких усилий, чтобы быть эффективным в моем использовании контрольных точек.

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

Я не нашел никаких библиотек рисунков (например, CAIRO), которая в сопутствующей степени поддерживает спиральные формы

Нет, это довольно необычная особенность; Всего очень недавно, что рисунок со спиралями стал популярным.

Код Inkscape использует для этого Спиро. Отказ Это в основном Python, и может использовать Каир, чтобы сделать безер, что спирали аппроксимируются в.

Однако, оценка интеграла на каждом пикселе поражает меня как довольно неэффективно.

Да, в самом деле.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top