[Bf-committers] finding co-planer faces.

Alexander Ewering bf-committers@blender.org
Sat, 24 Jul 2004 14:27:00 +0200 (CEST)


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