Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: КАК ОПРЕДЕЛИТЬ HАПРАВЛЕHИЕ ОБХОДА ?????????   Oleg Shmidt   31 Oct 2001 10:48:53 
Архивное /ru.algorithms/19461dfdd375e.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional