Corrected use of Area with the unambiguous DoubleArea
This commit is contained in:
parent
92c21e838d
commit
381ce72a56
|
|
@ -24,6 +24,9 @@
|
||||||
History
|
History
|
||||||
|
|
||||||
$Log: not supported by cvs2svn $
|
$Log: not supported by cvs2svn $
|
||||||
|
Revision 1.20 2005/11/12 06:44:29 cignoni
|
||||||
|
Changed GetClosest -> GetClosestFace
|
||||||
|
|
||||||
Revision 1.19 2005/10/02 23:11:50 cignoni
|
Revision 1.19 2005/10/02 23:11:50 cignoni
|
||||||
Changed the core for distance computation.
|
Changed the core for distance computation.
|
||||||
Current version uses the lib flexible search structures.
|
Current version uses the lib flexible search structures.
|
||||||
|
|
@ -274,9 +277,9 @@ inline double Sampling<MetroMesh>::ComputeMeshArea(MetroMesh & mesh)
|
||||||
|
|
||||||
for(face=mesh.face.begin(); face != mesh.face.end(); face++)
|
for(face=mesh.face.begin(); face != mesh.face.end(); face++)
|
||||||
if(!(*face).IsD())
|
if(!(*face).IsD())
|
||||||
area += face->Area();
|
area += face->DoubleArea();
|
||||||
|
|
||||||
return area;
|
return area/2.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class MetroMesh>
|
template <class MetroMesh>
|
||||||
|
|
@ -455,7 +458,7 @@ void Sampling<MetroMesh>::MontecarloFaceSampling()
|
||||||
if(!(*fi).IsD())
|
if(!(*fi).IsD())
|
||||||
{
|
{
|
||||||
// compute # samples in the current face.
|
// compute # samples in the current face.
|
||||||
n_samples_decimal += fi->Area() * n_samples_per_area_unit;
|
n_samples_decimal += 0.5*fi->DoubleArea() * n_samples_per_area_unit;
|
||||||
n_samples = (int) n_samples_decimal;
|
n_samples = (int) n_samples_decimal;
|
||||||
|
|
||||||
// for every sample p_i in T...
|
// for every sample p_i in T...
|
||||||
|
|
@ -529,7 +532,7 @@ void Sampling<MetroMesh>::SubdivFaceSampling()
|
||||||
for(fi=S1.face.begin(); fi != S1.face.end(); fi++)
|
for(fi=S1.face.begin(); fi != S1.face.end(); fi++)
|
||||||
{
|
{
|
||||||
// compute # samples in the current face.
|
// compute # samples in the current face.
|
||||||
n_samples_decimal += fi->Area() * n_samples_per_area_unit;
|
n_samples_decimal += 0.5*fi->DoubleArea() * n_samples_per_area_unit;
|
||||||
n_samples = (int) n_samples_decimal;
|
n_samples = (int) n_samples_decimal;
|
||||||
if(n_samples)
|
if(n_samples)
|
||||||
{
|
{
|
||||||
|
|
@ -578,7 +581,7 @@ void Sampling<MetroMesh>::SimilarFaceSampling()
|
||||||
for(fi=S1.face.begin(); fi != S1.face.end(); fi++)
|
for(fi=S1.face.begin(); fi != S1.face.end(); fi++)
|
||||||
{
|
{
|
||||||
// compute # samples in the current face.
|
// compute # samples in the current face.
|
||||||
n_samples_decimal += fi->Area() * n_samples_per_area_unit;
|
n_samples_decimal += 0.5*fi->DoubleArea() * n_samples_per_area_unit;
|
||||||
n_samples = (int) n_samples_decimal;
|
n_samples = (int) n_samples_decimal;
|
||||||
if(n_samples)
|
if(n_samples)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,9 @@
|
||||||
History
|
History
|
||||||
|
|
||||||
$Log: not supported by cvs2svn $
|
$Log: not supported by cvs2svn $
|
||||||
|
Revision 1.9 2005/09/28 19:35:06 m_di_benedetto
|
||||||
|
Added class PointDistanceFunctor.
|
||||||
|
|
||||||
Revision 1.8 2005/09/14 12:58:44 pietroni
|
Revision 1.8 2005/09/14 12:58:44 pietroni
|
||||||
changed min calls to Min<ScalarType> of math.h of vcglib
|
changed min calls to Min<ScalarType> of math.h of vcglib
|
||||||
|
|
||||||
|
|
@ -140,7 +143,7 @@ namespace vcg {
|
||||||
// vicini (come prodotto vettore)
|
// vicini (come prodotto vettore)
|
||||||
// Nota: si potrebbe rendere un pochino piu' veloce sostituendo Area()
|
// Nota: si potrebbe rendere un pochino piu' veloce sostituendo Area()
|
||||||
// con il prodotto vettore dei due edge in 2d lungo il piano migliore.
|
// con il prodotto vettore dei due edge in 2d lungo il piano migliore.
|
||||||
if( (b=vcg::math::Min<ScalarType>(b0,vcg::math::Min<ScalarType>(b1,b2))) < EPSILON*Area(f))
|
if( (b=vcg::math::Min<ScalarType>(b0,vcg::math::Min<ScalarType>(b1,b2))) < EPSILON*DoubleArea(f))
|
||||||
{
|
{
|
||||||
ScalarType bt;
|
ScalarType bt;
|
||||||
if(b==b0) bt = PSDist(q,f.V(1)->cP(),f.V(2)->cP(),p);
|
if(b==b0) bt = PSDist(q,f.V(1)->cP(),f.V(2)->cP(),p);
|
||||||
|
|
@ -174,7 +177,7 @@ namespace vcg {
|
||||||
if(dist>b2) { dist = b2; return true; }
|
if(dist>b2) { dist = b2; return true; }
|
||||||
else return false;
|
else return false;
|
||||||
}
|
}
|
||||||
if( (b=vcg::math::Min<ScalarType>(b0,vcg::math::Min<ScalarType>(b1,b2))) < EPSILON*Area(f))
|
if( (b=vcg::math::Min<ScalarType>(b0,vcg::math::Min<ScalarType>(b1,b2))) < EPSILON*DoubleArea(f))
|
||||||
{
|
{
|
||||||
ScalarType bt;
|
ScalarType bt;
|
||||||
if(b==b0) bt = PSDist(q,f.V(1)->cP(),f.V(2)->cP(),p);
|
if(b==b0) bt = PSDist(q,f.V(1)->cP(),f.V(2)->cP(),p);
|
||||||
|
|
@ -208,7 +211,7 @@ namespace vcg {
|
||||||
if(dist>b2) { dist = b2; return true; }
|
if(dist>b2) { dist = b2; return true; }
|
||||||
else return false;
|
else return false;
|
||||||
}
|
}
|
||||||
if( (b=vcg::math::Min<ScalarType>(b0,vcg::math::Min<ScalarType>(b1,b2))) < EPSILON*Area(f))
|
if( (b=vcg::math::Min<ScalarType>(b0,vcg::math::Min<ScalarType>(b1,b2))) < EPSILON*DoubleArea(f))
|
||||||
{
|
{
|
||||||
ScalarType bt;
|
ScalarType bt;
|
||||||
if(b==b0) bt = PSDist(q,f.V(1)->cP(),f.V(2)->cP(),p);
|
if(b==b0) bt = PSDist(q,f.V(1)->cP(),f.V(2)->cP(),p);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue