Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Является ли многоугольник выпуклым?   Найти похожие ветки 

 
IPranker ©   (2011-01-16 21:55) [0]

Алгоритм нашёл тут:
http://algolist.manual.ru/maths/geom/polygon/convex_or.php

Перевёл так:


Function IsConvexPolygon(const Pts: array of TPoint): boolean;
Var
i, Num: LongWord;
p1, p2: LongWord;

z   : LongInt;
Flag: LongInt;
begin
Num:= (High(Pts) + 1);
If (Num < 4) then      // Треугольники и проч.
begin
  Result:= (Num = 3);
  Exit;
end;

Flag:= 0;
For i:= 0 to Num - 1 do
begin
  p1:= (i + 1) mod Num;
  p2:= (i + 2) mod Num;
  z:=     (Pts[p1].X - Pts[i].X) * (Pts[p2].Y - Pts[p1].Y);
  z:= z - (Pts[p1].Y - Pts[i].Y) * (Pts[p2].X - Pts[p1].X);

  If (z < 0) then Flag:= Flag or 1
  else
    If (z > 0) then Flag:= Flag or 2;

  If (Flag = 3) then
  begin
    Result:= True;
    Exit;
  end;
end;

Result:= (Flag <> 0);
End;



Но работает неверно. Почему?

P.S. Модеры, почему закрыли мои прошлую ветку?
   
http://delphimaster.net/view/2-1295201878/
На каких таких основаниях называете меня быдлокодером?

P.S.S. Если и эту ветку закроете, то слив вам защитан, "мастера".


 
DiamondShark ©   (2011-01-16 22:34) [1]

И эту закроют, за понты и обсуждение модерирования.


> Но работает неверно. Почему?

Очевидно же: ошибка в программе.

Назвали правильно. Как ещё назвать того, кто копипастит код, но не способен самостоятельно разобраться в алгоритме из двадцати строк, половина из которых декларации, инициализации и предусловия.



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.275 c
15-1328345338
Rouse_
2012-02-04 12:48
2013.03.22
Засоветуйте WiFi роутер


2-1342192815
Wadimka
2012-07-13 19:20
2013.03.22
Помогите с регистрацией класса


15-1336077005
Юрий
2012-05-04 00:30
2013.03.22
С днем рождения ! 4 мая 2012 пятница


2-1331395974
NBAH1990
2012-03-10 20:12
2013.03.22
По нашатию комбинации клавиш скопировать текст в прогу


8-1227079093
Andrey_ka
2008-11-19 10:18
2013.03.22
как заставить окно перерисовываться?