Commit 8e0ed488 authored by Pierre Kraemer's avatar Pierre Kraemer

bounding box : origin centered scale

parent 3bee55cb
......@@ -37,7 +37,9 @@ namespace CGoGN
namespace Algo
{
namespace MC {
namespace MC
{
/**
* Marching Cube
*
......@@ -257,10 +259,11 @@ public:
void recalPoints(const Geom::Vec3f& origin);
};
} // namespace MC
} // namespace Algo
} // end namespace
} // end namespace
} // end namespace
} // namespace CGoGN
#include "Algo/MC/marchingcube.hpp"
#endif
......@@ -89,23 +89,22 @@ class BoundingBox
// fusion with the given bounding box
void fusion(const BoundingBox<VEC>& bb) ;
//return true if the vector belongs strictly to a bounding box
// return true if the vector belongs strictly to a bounding box
bool contains(const VEC& p);
//return true if the bounding box belongs strictly to a bounding box
// return true if the bounding box belongs strictly to a bounding box
bool contains(const BoundingBox<VEC> & bb);
//resize a bounding box
void scale(float size);
// scale the bounding box
void scale(typename VEC::DATA_TYPE size);
// 0-centered scale of the bounding box
void centeredScale(typename VEC::DATA_TYPE size);
/**********************************************/
/* STREAM OPERATORS */
/**********************************************/
// friend std::ostream& operator<<(std::ostream& out, const BoundingBox<VEC>& bb);
//
// friend std::istream& operator>>(std::istream& in, BoundingBox<VEC>& bb);
friend std::ostream& operator<<(std::ostream& out, const BoundingBox<VEC>& bb)
{
out << bb.min() << " " << bb.max() ;
......
......@@ -142,7 +142,7 @@ bool BoundingBox<VEC>::isInitialized() const
template <typename VEC>
void BoundingBox<VEC>::reset()
{
m_initialized=false;
m_initialized = false;
}
template <typename VEC>
......@@ -197,7 +197,6 @@ void BoundingBox<VEC>::fusion(const BoundingBox<VEC>& bb)
}
}
template <typename VEC>
bool BoundingBox<VEC>::contains(const VEC& p)
{
......@@ -221,28 +220,20 @@ bool BoundingBox<VEC>::contains(const BoundingBox<VEC>& bb)
}
template <typename VEC>
void BoundingBox<VEC>::scale(float size)
void BoundingBox<VEC>::scale(typename VEC::DATA_TYPE size)
{
assert(m_initialized || !"Bounding box not initialized");
m_pMin *= size;
m_pMax *= size;
m_pMin *= size ;
m_pMax *= size ;
}
//template <typename VEC>
//friend std::ostream& BoundingBox<VEC>::operator<<(std::ostream& out, const BoundingBox<VEC>& bb)
//{
// out << bb.min() << " " << bb.max() ;
// return out ;
//}
//
//template <typename VEC>
//friend std::istream& BoundingBox<VEC>::operator>>(std::istream& in, BoundingBox<VEC>& bb)
//{
// in >> bb.min() >> bb.max() ;
// return in ;
//}
template <typename VEC>
void BoundingBox<VEC>::centeredScale(typename VEC::DATA_TYPE size)
{
VEC center = (m_pMin + m_pMax) / typename VEC::DATA_TYPE(2) ;
m_pMin = ((m_pMin - center) * size) + center ;
m_pMax = ((m_pMax - center) * size) + center ;
}
} // namespace Geom
......
......@@ -109,6 +109,6 @@ class Plane3D
} // namespace CGoGN
#include "plane_3d.hpp"
#include "Geometry/plane_3d.hpp"
#endif
......@@ -44,8 +44,7 @@ std::string Plane3D<T>::CGoGNnameOfType()
/**********************************************/
template <typename T>
Plane3D<T>::Plane3D(int d) :
m_normal(0), m_d(d)
Plane3D<T>::Plane3D(int d) : m_normal(0), m_d(d)
{ }
template <typename T>
......@@ -56,15 +55,13 @@ Plane3D<T>::Plane3D(const Plane3D<T>& p)
}
template <typename T>
Plane3D<T>::Plane3D(const Vector<3,T>& n, T d) :
m_normal(n), m_d(d)
Plane3D<T>::Plane3D(const Vector<3,T>& n, T d) : m_normal(n), m_d(d)
{
m_normal.normalize();
}
template <typename T>
Plane3D<T>::Plane3D(const Vector<3,T>& n, const Vector<3,T>& p) :
m_normal(n), m_d(-(p*n))
Plane3D<T>::Plane3D(const Vector<3,T>& n, const Vector<3,T>& p) : m_normal(n), m_d(-(p*n))
{
m_normal.normalize();
}
......@@ -118,7 +115,7 @@ T Plane3D<T>::distance(const Vector<3,T>& p) const
template <typename T>
void Plane3D<T>::project(Vector<3,T>& p) const
{
#define PRECISION 1e-5
#define PRECISION 1e-10
T d = -distance(p) ;
if(abs(d) > PRECISION)
{
......@@ -131,7 +128,7 @@ void Plane3D<T>::project(Vector<3,T>& p) const
template <typename T>
Orientation3D Plane3D<T>::orient(const Vector<3,T>& p) const
{
#define PRECISION 1e-5
#define PRECISION 1e-10
T dist = distance(p) ;
if(dist < -PRECISION)
return UNDER ;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment