- bh_iter jt;
- bh_iter_init( 0, &jt );
-
- boxf region;
- float const k_r = 0.02f;
- v3_add( (v3f){ k_r, k_r, k_r }, tri[j], region[1] );
- v3_add( (v3f){ -k_r, -k_r, -k_r }, tri[j], region[0] );
-
- int jdx;
- while( bh_next( rbb->inf.scene.bh_scene, &jt, region, &jdx ) )
- {
- if( idx <= jdx )
- continue;
-
- u32 *ptrj = &sc->arrindices[ jdx*3 ];
- v3f trj[3];
-
- for( int k=0; k<3; k++ )
- v3_copy( sc->arrvertices[ptrj[k]].co, trj[k] );
-
- for( int k=0; k<3; k++ )
- {
- if( v3_dist2( tri[j], trj[k] ) <= k_r*k_r )
- {
- int jp1 = (j+1)%3,
- jp2 = (j+2)%3,
- km1 = (k+3-1)%3,
- km2 = (k+3-2)%3;
-
- if( v3_dist2( tri[jp1], trj[km1] ) <= k_r*k_r )
- {
- v3f b0, b1, b2;
- v3_sub( tri[jp1], tri[j], b0 );
- v3_sub( tri[jp2], tri[j], b1 );
- v3_sub( trj[km2], tri[j], b2 );
-
- v3f cx0, cx1;
- v3_cross( b0, b1, cx0 );
- v3_cross( b2, b0, cx1 );
-
- float polarity = v3_dot( cx0, b2 );
-
- if( polarity < 0.0f )
- {
-#if 0
- vg_line( tri[j], tri[jp1], 0xff00ff00 );
- float ang = v3_dot(cx0,cx1) /
- (v3_length(cx0)*v3_length(cx1));
- if( ang < sharp_ang )
- {
- vg_line( tri[j], tri[jp1], 0xff00ff00 );
- }
-#endif
- }
- }
- }
- }
- }