Пример #1
0
 function add(Vertex $nv)
 {
     if ($this->cnt == 0) {
         $this->first =& $nv;
         // Save a reference to it in the polygon
         $this->first->setNext($nv);
         // Set its pointer to point to itself
         $this->first->setPrev($nv);
         // because it is the only vertex in the list
         $ps =& $this->first->Nseg();
         // Get ref to the Next segment object
         $this->first->setPseg($ps);
         // and save it as Prev segment as well
     } else {
         // $p <-> $nv <-> $n
         //    $ps     $ns
         $n =& $this->first;
         // Get a ref to the first vertex in the list
         $p =& $n->Prev();
         // Get ref to previous vertex
         $n->setPrev($nv);
         // Add at end of list (just before first)
         $nv->setNext($n);
         // link the new vertex to it
         $nv->setPrev($p);
         // link to the pervious EOL vertex
         $p->setNext($nv);
         // And finally link the previous EOL vertex
         // Segments
         $ns =& $nv->Nseg();
         // Get ref to the new next segment
         $ps =& $p->Nseg();
         // Get ref to the previous segment
         $n->setPseg($ns);
         // Set new previous seg for $this->first
         $nv->setPseg($ps);
         // Set previous seg of the new vertex
     }
     $this->cnt++;
     // Increment the count of vertices
 }