|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Oleg Shmidt 2:5020/400 31 Oct 2001 10:48:53 To : Oleg Tynianyi Subject : Re: КАК ОПРЕДЕЛИТЬ HАПРАВЛЕHИЕ ОБХОДА ????????? -------------------------------------------------------------------------------- Hello Oleg, OT> Есть массив точек (X,Y) на плоскости. Они образуют замкнутую фигуру. OT> КАК определить, что они перечислены по часовой или против часовой стрелки ? OT> Просто сам факт: по или против ???? Попробуй так. Может поможет. PS: Однако я сейчас не помню точно, но кажется, что здесь хранится последняя точка равная первой. Обычно так не делается, поэтому тебе надо изменить это. Вообще надо посчитать выражение от каждой точки до следующей, соответсвенно от последней до первой. Олег. bool CApiElementMemo::IsCCW( long subPoly ) const { // note: Newell's method. // sign Z coord of normal vector is direction long startNode=StartSubPolyIndex(subPoly); long endNode=EndSubPolyIndex(subPoly); double Z=0.0; Coord2D prev=GetPolyNode(startNode); for ( long node=startNode+1; node<=endNode; ++node ) { Coord2D curr=GetPolyNode(node); Z+=(curr.x-prev.x)*(curr.y+prev.y); prev=curr; } return Z<0.0; } -- Отправлено через сервер Talk.Ru - http://www.talk.ru --- ifmail v.2.15dev5 * Origin: Talk.Ru (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/19461dfdd375e.html, оценка из 5, голосов 10
|