Forum Webscript.Ru

Программирование => Perl => Тема начата: Error202 от 08 Ноября 2006, 13:47:08

Название: GD - линии по точкам
Отправлено: Error202 от 08 Ноября 2006, 13:47:08
Здравствуйте...

У меня есть квадрат, в нем раскидано 10 точек... координаты каждой точки есть...

Как можно их соединить линиями так, чтобы линии не пересекались?

P.S. Сейчас координаты хранятся в массиве типа
$c
Название: GD - линии по точкам
Отправлено: 09h от 09 Ноября 2006, 20:44:50
хмм я в школе на геометрию почти не ходил )) компутерные клубы были более популярны ) но в учебнике 7-11 класс тончо есть это ...

допустим есть 4 точки:
х1=4 у1=0
х2=5 у2=8
х3=2 у3=2
х4=7 у4=5

ну сколько их эт не важно дальше все аналогично ... разберемся на 4 точках

первую линию проводим например между точками 3 и 4
и гденить запоминаем на будущее что точки 3 и 4 соеденены линией

дальше берем точку 1 и пытаемся соеденить линией с точкой 2
и проверяем пересечется наша пока не нарисаваная линия с какойнить из тех что раньше рисовали ... а рисовали тока между 3 и 4 вот и проверим

(x-x1)/(x1-x2) = (y-y1)/(y1-y2)
(x-x3)/(x3-x4) = (y-y3)/(y3-y4)
решаем эту систему ур и получаем х0 и у0 пересечения

дальше проверяем лежит точка пересечения в линиях или нет
если:
x3y3x1y1то линии пересекутся )
а если нет то рисуем и запоминаем что у нас уже линии между 1 и 2 , 3 и 4

GD не пользовался как линию рисовать наверное знаеш )

сделай функцию для проверки пересечения линии которую тока собираешся нарисовать с всеми линиями которые уже нарисованы

и штампуй скока хочеш линий которые не будут пересекатся :)

вроде все ...
Название: GD - линии по точкам
Отправлено: Error202 от 10 Ноября 2006, 10:43:26
СПАСИБО!!!