Здравствуйте, gok, Вы писали:
gok>Люди, подскажите как построить буфер вокруг кривой?
gok>Те нужен полигон, точки которого отстоят от ближайших точек кривой примерно на одинаковое расстояние.
Как задана кривая? В любом случае, найти перпендикуляр в любой точке не составляет труда. Далее строишь две кривых, таких что каждой точке исходной прямой соотвествует точка отстоящая от нее на заданной расстояние вдоль перпендикуляра справа (одна кривая) и слева (другая). Еще берешь два отрезка прямых, чтобы замкнуть полигон.
gok>Кривая не самопересекается, поэтому полигон тоже замкнут и не самопересекающийся.
Построенные кривые могут иметь самопересесечения, но это нестрашно, можно такие пересечения находить и выбрасывать ту часть кривой что оказывается внутри полигона.
... << RSDN@Home 1.2.0 alpha rev. 622>>
Здравствуйте, gok, Вы писали:
gok>Задана как обычно (x,y,z).
Т.е. последовательность точек соединенных отрезками.
gok>По точкам? Дороговато, по-моему.
Сложность O(N), да и коэффициент небольшой, дешевле не будет. Хотя еще будет поиск самопересечений, что уже O(N^2) либо O(N*log(N)). Но все равно вряд ли дешевле можно сделать. Разве что не искать самопересечений, а взять алгоритм закраски соотвествующий, чтобы ему начхать было.
gok>Я думаю мобыть параллельным сносом повращать вокруг любой точки (конец, например) и накопить крайние?
Во-первых получишь ты нечто непонятное и непредсказуемое, да и вообще не то, т.к. около точки вокруг которой вращать будет нулевая толщина.
Во-вторых никак не дешевле.
... << RSDN@Home 1.2.0 alpha rev. 622>>