コード例 #1
0
ファイル: TrapezoidalMap.cs プロジェクト: HSJMDMG/CHGame
        //compute the faces intersect with segment seg
        private List <TrapezoidFace> FollowSegment(TDShape seg)
        {
            List <TrapezoidFace> traversed = new List <TrapezoidFace>();

            TDPoint p = seg.getFirst();
            TDPoint q = seg.getLast();

            /*		if (p.equals(q))
             *                      System.out.println("AAAAAAHHHH!");
             */
            TrapezoidFace start = Dgraph.retrieve(p);

            traversed.Add(start);

            TrapezoidFace j = start;

            while (j != null && (j.rightp != null && q.right(j.rightp)))
            {
                if (seg.above(j.rightp))
                {
                    j = j.lowerRight;
                }
                else
                {
                    j = j.upperRight;
                }

                if (j != null)
                {
                    traversed.Add(j);
                }
            }

            return(traversed);
        }
コード例 #2
0
 public TDNode getNext(TDPoint p)
 {
     // x-node
     if (type == POINT)
     {
         return(p.right(p) ? rightNode : leftNode);
     }
     // y-node
     else if (type == SEG)
     {
         return(s.above(p) ? leftNode : rightNode);
     }
     return(null);
 }