proj home

Files   Classes   Functions   Hierarchy  

d3mincentroid2 Class Reference

#include <d3mincentroid2.h>

Inheritance diagram for d3mincentroid2:
Collaboration diagram for d3mincentroid2:

List of all members.

Public Member Functions

 d3mincentroid2 (d3tess &tess_)
boolc eval (uintc a, uintc b)


Detailed Description

Definition at line 14 of file d3mincentroid2.h.


Constructor & Destructor Documentation

d3mincentroid2::d3mincentroid2 ( d3tess tess_  ) 

Definition at line 14 of file d3mincentroid2.cpp.

00015   : d3minoperator(tess_)
00016 {
00017 }


Member Function Documentation

boolc d3mincentroid2::eval ( uintc  a,
uintc  b 
) [virtual]

Reimplemented from d3minoperator.

Definition at line 19 of file d3mincentroid2.cpp.

References d3tess::flip(), d3tess::isconvex(), simplexD2linked::niInverse(), simplexD2linked::pi, d3tess::pt, d3minoperator::tess, and d3tess::vi.

00020 {
00021   if (tess.isconvex(a,b)==false)
00022     return false;
00023 
00024   simplexD2linked const & A(tess.vi[a]);
00025   simplexD2linked const & B(tess.vi[b]);
00026 
00027   uint ai = A.niInverse(b);
00028   uint bi = B.niInverse(a);
00029 
00030   uint p[4];
00031   p[0] = A.pi[ai];
00032   p[3] = B.pi[bi];
00033   p[1] = A.pi[(ai+1)%3];
00034   p[2] = A.pi[(ai+2)%3];
00035 
00036   vector<pt3> const & pt(tess.pt);
00037 
00038   pt2 P0(pt[p[0]]);
00039   pt2 P1(pt[p[1]]);
00040   pt2 P2(pt[p[2]]);
00041   pt2 P3(pt[p[3]]);
00042 
00043   // Calculate the centroid.
00044   pt2 C0(P0);
00045   C0 += P1;
00046   C0 += P2;
00047   C0 *= (1.0/3.0);
00048 
00049   double radius;
00050   radius = min((C0-P0).distance(),(C0-P1).distance());
00051   radius = min((C0-P0).distance(),radius);
00052 
00053   if ((C0-P3).dot() > radius*radius )
00054     return false;
00055 
00056   tess.flip(a,b);
00057 
00058   return true;
00059 }


The documentation for this class was generated from the following files:

Generated on Fri Mar 4 00:49:54 2011 for Chelton Evans Source by  doxygen 1.5.8