[Bf-committers] finding co-planer faces.

Daniel Dunbar bf-committers@blender.org
Sat, 24 Jul 2004 07:50:51 -0700 (PDT)


If the faces are adjacent, one cannot be "offset" from the other
without changing the normal. 

--- Campbell Barton <cbarton@metavr.com> wrote:
> I might be wrong here but these formulas dont detect weather faces are 
> on the same plane- IE Same faces could be offset but still facing the 
> same way.
> 
> The method your talking about I have done- is my normal the same as your 
> normal (within a given limit)
> 
> I was looking for a way of findinf objects that have the same normal and 
> are level with each other. kinda tricky to explain. hope you get it.
> 
> A solution would be to say.
> 
> =is my normal the same as yours.
> =If so then rotate my centre point by the objects normal (where Im 
> currently stuck! how can I turn a normal into a rotation matrix???)
> =having rotated the centre point of the face in question, is its X (or 
> any other axis depending onm the rotation) the same as mine (what I mean 
> by being on the same level.)
> = if so themn its 'co-planer' and select it.
> 
> - Cam
> 
> Alexander Ewering wrote:
> 
> >
> > On Sat, 24 Jul 2004, Campbell Barton wrote:
> >
> >> Alex, how did you detect co planer faces?
> >> Id liek to know the formula.
> >
> >
> > Uhm, the formula is
> >
> >     if (VecCompare(evl->n, evl2->n, 0.01)) {
> >
> > :)
> >
> > Basically, I just do that for every adjacent face until
> > I don't find any face anymore that fulfills the
> > if statement.
> >
> > The code is here, for your enjoyment:
> >
> > void select_coplanar_mesh(void)
> > {
> >     EditVlak *evl, *evl2;
> >     int count= 1;
> >
> >     while (count) {
> >         evl= G.edvl.first;
> >         count= 0;
> >         while(evl) {
> >             if(vlakselectedAND(evl, 1)) {
> >                 evl2= G.edvl.first;
> >                 while(evl2) {
> >                     if (ELEM4(evl2->v1, evl->v1, evl->v2, evl->v3, 
> > evl->v4) ||
> >                         ELEM4(evl2->v2, evl->v1, evl->v2, evl->v3, 
> > evl->v4) ||
> >                         ELEM4(evl2->v3, evl->v1, evl->v2, evl->v3, 
> > evl->v4) ||
> >                         ELEM4(evl2->v4, evl->v1, evl->v2, evl->v3, 
> > evl->v4))
> >                         if (VecCompare(evl->n, evl2->n, 0.01)) {
> >                             if (!vlakselectedAND(evl2, 1)) {
> >                                 count++;
> >                                 evl2->v1->f |= 1;
> >                                 evl2->v2->f |= 1;
> >                                 evl2->v3->f |= 1;
> >                                 evl2->v4->f |= 1;
> >                             }
> >                         }
> >                     evl2= evl2->next;
> >                 }
> >             }
> >             evl= evl->next;
> >         }
> >     }
> > }
> >
> >
> > | alexander ewering              instinctive mediaworks
> > | ae[@]instinctive[.]de   http://www[.]instinctive[.]de
> > _______________________________________________
> > Bf-committers mailing list
> > Bf-committers@blender.org
> > http://www.blender.org/mailman/listinfo/bf-committers
> >
> >
> 
> 
> -- 
> Campbell J Barton
> 
> 133 Hope Street
> Geelong West, Victoria 3218 Australia
> 
> URL:    http://www.metavr.com
> e-mail: cbarton@metavr.com
> phone: AU (03) 5229 0241
> 
> _______________________________________________
> Bf-committers mailing list
> Bf-committers@blender.org
> http://www.blender.org/mailman/listinfo/bf-committers
> 


=====
daniel dunbar
daniel@zuster.org