Points not on neighbor polygons edges

On 16/03/2013 at 15:33, xxxxxxxx wrote:

User Information:
Cinema 4D Version:   R12 
Platform:   Windows  ;   Mac OSX  ; 
Language(s) :     C++  ;

---------
Let's say that I have two triangles (ta and tb) with a neighboring edge.  Using GetPolyInfo(ta), the point of ta that is not on the edge is trivial (for edge[0], it would be ta->c since edge[0] represents an edge from points a->b, etc.).  Is there a simple way to get the point not on the edge for tb or do I really need to find out which of the three point indices of tb (tb->a, tb->b, tb->c) don't match ta->a and ta->b?

On 16/03/2013 at 17:07, xxxxxxxx wrote:

Well, okay.  I went the 'et tu, brute'-force method.  Here is an example for the curious:

pinfo =        neighbor.GetPolyInfo(i);  
if (!pinfo->mark[0])  
{  
  s->Init(f->p1, f->p2, ks, kd, 0.0, 1000.0);  
  ++s;  
  ++scnt;  
  // Diagonal bracing across points not on edge for triangles  
  ef =    pinfo->face[0];  
  if (ef != NOTOK)  
  {  
      np =    &polys[ef];  
      if ((np->a != p->a) && (np->a != p->b))  
          s->Init(f->p3, &masses[np->a], ks, kd, 0.0, 1000.0);  
      else if ((np->b != p->a) && (np->b != p->b))  
          s->Init(f->p3, &masses[np->b], ks, kd, 0.0, 1000.0);  
      else  
          s->Init(f->p3, &masses[np->c], ks, kd, 0.0, 1000.0);  
      ++s;  
      ++scnt;  
  }  
}

Note: the number of 'edges' (in this case, the 's' array) total for a triangulated object becomes neighbor->GetEdgeCount() + (polygonCount * 2).