Written some documentation and added to the space module
This commit is contained in:
parent
b84e4c7460
commit
c735627fae
|
@ -24,6 +24,9 @@
|
||||||
History
|
History
|
||||||
|
|
||||||
$Log: not supported by cvs2svn $
|
$Log: not supported by cvs2svn $
|
||||||
|
Revision 1.1 2004/02/15 23:34:04 cignoni
|
||||||
|
Initial commit
|
||||||
|
|
||||||
|
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
@ -35,23 +38,24 @@ $Log: not supported by cvs2svn $
|
||||||
#include <vcg/space/point3>
|
#include <vcg/space/point3>
|
||||||
namespace vcg {
|
namespace vcg {
|
||||||
|
|
||||||
|
/** \addtogroup space */
|
||||||
|
/*@{*/
|
||||||
|
|
||||||
template <class T>
|
/**
|
||||||
/** @name Box2
|
Templated class for a 2D bounding box. It is stored just as two Point2
|
||||||
Class Box2.
|
@param BoxScalarType (Template Parameter) Specifies the scalar field.
|
||||||
This is the class for definition of a bounding box in 2D space.
|
|
||||||
@param T (Templete Parameter) Specifies the scalar field.
|
|
||||||
*/
|
*/
|
||||||
|
template <class BoxScalarType>
|
||||||
class Box2
|
class Box2
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/// The scalar type
|
/// The scalar type
|
||||||
typedef T scalar_type;
|
typedef BoxScalarType ScalarType;
|
||||||
|
|
||||||
/// min coordinate point
|
/// min coordinate point
|
||||||
Point2<T> min;
|
Point2<BoxScalarType> min;
|
||||||
/// max coordinate point
|
/// max coordinate point
|
||||||
Point2<T> max;
|
Point2<BoxScalarType> max;
|
||||||
/// Standard constructor
|
/// Standard constructor
|
||||||
inline Box2() { min.x()= 1; max.x()= -1; min.y()= 1; max.y()= -1; }
|
inline Box2() { min.x()= 1; max.x()= -1; min.y()= 1; max.y()= -1; }
|
||||||
/// Copy constructor
|
/// Copy constructor
|
||||||
|
@ -62,29 +66,14 @@ public:
|
||||||
inline bool operator == ( Box2 const & p ) const
|
inline bool operator == ( Box2 const & p ) const
|
||||||
{
|
{
|
||||||
return min==p.min && max==p.max;
|
return min==p.min && max==p.max;
|
||||||
}
|
|
||||||
/** Varia le dimensioni del bounding box scalandole rispetto al parametro scalare.
|
|
||||||
@param s Valore scalare che indica di quanto deve variare il bounding box
|
|
||||||
*/
|
|
||||||
void Inflate( const T s )
|
|
||||||
{
|
|
||||||
Inflate( (max-min)*s );
|
|
||||||
}
|
|
||||||
/** Varia le dimensioni del bounding box del valore fornito attraverso il parametro.
|
|
||||||
@param delta Point in 2D space
|
|
||||||
*/
|
|
||||||
void Inflate( const Point2<T> & delta )
|
|
||||||
{
|
|
||||||
min -= delta;
|
|
||||||
max += delta;
|
|
||||||
}
|
}
|
||||||
/// Initializing the bounding box with a point
|
/// Initializing the bounding box with a point
|
||||||
void Set( const Point2<T> & p )
|
void Set( const Point2<BoxScalarType> & p )
|
||||||
{
|
{
|
||||||
min = max = p;
|
min = max = p;
|
||||||
}
|
}
|
||||||
// Initializing with the values
|
// Initializing with the values
|
||||||
inline void Set( T minx, T miny, T maxx, T maxy )
|
inline void Set( BoxScalarType minx, BoxScalarType miny, BoxScalarType maxx, BoxScalarType maxy )
|
||||||
{
|
{
|
||||||
min[0] = minx;
|
min[0] = minx;
|
||||||
min[1] = miny;
|
min[1] = miny;
|
||||||
|
@ -119,7 +108,7 @@ public:
|
||||||
cade fuori da esso.
|
cade fuori da esso.
|
||||||
@param p The point 2D
|
@param p The point 2D
|
||||||
*/
|
*/
|
||||||
void Add( const Point2<T> & p )
|
void Add( const Point2<BoxScalarType> & p )
|
||||||
{
|
{
|
||||||
if(IsNull()) Set(p);
|
if(IsNull()) Set(p);
|
||||||
else
|
else
|
||||||
|
@ -148,7 +137,7 @@ public:
|
||||||
/** Trasla il bounding box di un valore definito dal parametro.
|
/** Trasla il bounding box di un valore definito dal parametro.
|
||||||
@param p Il bounding box trasla sulla x e sulla y in base alle coordinate del parametro
|
@param p Il bounding box trasla sulla x e sulla y in base alle coordinate del parametro
|
||||||
*/
|
*/
|
||||||
void Translate( const Point2<T> & p )
|
void Translate( const Point2<BoxScalarType> & p )
|
||||||
{
|
{
|
||||||
min += p;
|
min += p;
|
||||||
max += p;
|
max += p;
|
||||||
|
@ -157,7 +146,7 @@ public:
|
||||||
@param p The point 2D
|
@param p The point 2D
|
||||||
@return True se p appartiene al bounding box, false altrimenti
|
@return True se p appartiene al bounding box, false altrimenti
|
||||||
*/
|
*/
|
||||||
bool IsIn( Point2<T> const & p ) const
|
bool IsIn( Point2<BoxScalarType> const & p ) const
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
min.v[0] <= p.v[0] && p.v[0] <= max.v[0] &&
|
min.v[0] <= p.v[0] && p.v[0] <= max.v[0] &&
|
||||||
|
@ -168,7 +157,7 @@ public:
|
||||||
@param p The point 2D
|
@param p The point 2D
|
||||||
@return True se p appartiene al bounding box, false altrimenti
|
@return True se p appartiene al bounding box, false altrimenti
|
||||||
*/
|
*/
|
||||||
bool IsInEx( Point2<T> const & p ) const
|
bool IsInEx( Point2<BoxScalarType> const & p ) const
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
min.v[0] <= p.v[0] && p.v[0] < max.v[0] &&
|
min.v[0] <= p.v[0] && p.v[0] < max.v[0] &&
|
||||||
|
@ -199,26 +188,26 @@ public:
|
||||||
*/
|
*/
|
||||||
inline bool IsEmpty() const { return min==max; }
|
inline bool IsEmpty() const { return min==max; }
|
||||||
/// Restituisce la lunghezza della diagonale del bounding box.
|
/// Restituisce la lunghezza della diagonale del bounding box.
|
||||||
T Diag() const
|
BoxScalarType Diag() const
|
||||||
{
|
{
|
||||||
return Distance(min,max);
|
return Distance(min,max);
|
||||||
}
|
}
|
||||||
/// Calcola il centro del bounding box.
|
/// Calcola il centro del bounding box.
|
||||||
Point2<T> Center() const
|
Point2<BoxScalarType> Center() const
|
||||||
{
|
{
|
||||||
return (min+max)/2;
|
return (min+max)/2;
|
||||||
}
|
}
|
||||||
/// Calcola l'area del Bounding box.
|
/// Calcola l'area del Bounding box.
|
||||||
inline T Area() const
|
inline BoxScalarType Area() const
|
||||||
{
|
{
|
||||||
return (max.v[0]-min.v[0])*(max.v[1]-min.v[1]);
|
return (max.v[0]-min.v[0])*(max.v[1]-min.v[1]);
|
||||||
}
|
}
|
||||||
/// Calcola la dimensione del bounding box sulla x.
|
/// Calcola la dimensione del bounding box sulla x.
|
||||||
inline T DimX() const { return max.v[0]-min.v[0]; }
|
inline BoxScalarType DimX() const { return max.v[0]-min.v[0]; }
|
||||||
/// Calcola la dimensione del bounding box sulla y.
|
/// Calcola la dimensione del bounding box sulla y.
|
||||||
inline T DimY() const { return max.v[1]-min.v[1]; }
|
inline BoxScalarType DimY() const { return max.v[1]-min.v[1]; }
|
||||||
|
|
||||||
inline void Normalize( Point2<T> & p )
|
inline void Normalize( Point2<BoxScalarType> & p )
|
||||||
{
|
{
|
||||||
p -= min;
|
p -= min;
|
||||||
p[0] /= max[0]-min[0];
|
p[0] /= max[0]-min[0];
|
||||||
|
@ -227,17 +216,6 @@ public:
|
||||||
}; // end class definition
|
}; // end class definition
|
||||||
|
|
||||||
|
|
||||||
#ifdef __GL_H__
|
|
||||||
/// Funzione di utilita' per la visualizzazione in OpenGL (short)
|
|
||||||
inline void glBox( Box2<short > const & b ) { glRectsv(b.min.v,b.max.v); }
|
|
||||||
/// Funzione di utilita' per la visualizzazione in OpenGL (int)
|
|
||||||
inline void glBox( Box2<int > const & b ) { glRectiv(b.min.v,b.max.v); }
|
|
||||||
/// Funzione di utilita' per la visualizzazione in OpenGL (float)
|
|
||||||
inline void glBox( Box2<float > const & b ) { glRectfv(b.min.v,b.max.v); }
|
|
||||||
/// Funzione di utilita' per la visualizzazione in OpenGL (double)
|
|
||||||
inline void glBox( Box2<double> const & b ) { glRectdv(b.min.v,b.max.v); }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/// Specificazione di box of short
|
/// Specificazione di box of short
|
||||||
typedef Box2<short> Box2s;
|
typedef Box2<short> Box2s;
|
||||||
/// Specificazione di box of int
|
/// Specificazione di box of int
|
||||||
|
@ -247,6 +225,7 @@ typedef Box2<float> Box2f;
|
||||||
/// Specificazione di box of double
|
/// Specificazione di box of double
|
||||||
typedef Box2<double> Box2d;
|
typedef Box2<double> Box2d;
|
||||||
|
|
||||||
|
/*@}*/
|
||||||
} // end namespace
|
} // end namespace
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,9 @@
|
||||||
History
|
History
|
||||||
|
|
||||||
$Log: not supported by cvs2svn $
|
$Log: not supported by cvs2svn $
|
||||||
|
Revision 1.2 2004/03/10 00:35:01 cignoni
|
||||||
|
Removed a wrong (?) copy constructor
|
||||||
|
|
||||||
Revision 1.1 2004/02/10 01:11:28 cignoni
|
Revision 1.1 2004/02/10 01:11:28 cignoni
|
||||||
Edited Comments and GPL license
|
Edited Comments and GPL license
|
||||||
|
|
||||||
|
@ -35,6 +38,14 @@ Edited Comments and GPL license
|
||||||
#include <vcg/space/point4.h>
|
#include <vcg/space/point4.h>
|
||||||
|
|
||||||
namespace vcg {
|
namespace vcg {
|
||||||
|
|
||||||
|
/** \addtogroup space */
|
||||||
|
/*@{*/
|
||||||
|
/**
|
||||||
|
The templated class for representing 4 entity color.
|
||||||
|
The class is templated over the ScalarType. class that is used to represent color with float or with unsigned chars. All the usual
|
||||||
|
operator overloading (* + - ...) is present.
|
||||||
|
*/
|
||||||
template <class T>
|
template <class T>
|
||||||
class Color4 : public Point4<T>
|
class Color4 : public Point4<T>
|
||||||
{
|
{
|
||||||
|
@ -134,12 +145,12 @@ inline void SetGrayShade(float f)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Given an integer returns a well ordering of colors
|
/** Given an integer returns a well ordering of colors
|
||||||
// so that every color differs as much as possible form the previous one
|
// so that every color differs as much as possible form the previous one
|
||||||
// params:
|
// params:
|
||||||
// n is the maximum expected value (max of the range)
|
// n is the maximum expected value (max of the range)
|
||||||
// v is the requested position
|
// v is the requested position
|
||||||
|
*/
|
||||||
inline static Color4 Scatter(int n, int a,float Sat=.3f,float Val=.9f)
|
inline static Color4 Scatter(int n, int a,float Sat=.3f,float Val=.9f)
|
||||||
{
|
{
|
||||||
int b, k, m=n;
|
int b, k, m=n;
|
||||||
|
@ -246,6 +257,9 @@ inline Color4<float>::Color4<float>(Color4<float>::ColorConstant cc)
|
||||||
typedef Color4<unsigned char> Color4b;
|
typedef Color4<unsigned char> Color4b;
|
||||||
typedef Color4<float> Color4f;
|
typedef Color4<float> Color4f;
|
||||||
|
|
||||||
|
/*@}*/
|
||||||
|
|
||||||
|
|
||||||
} // end of NameSpace
|
} // end of NameSpace
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -24,6 +24,9 @@
|
||||||
History
|
History
|
||||||
|
|
||||||
$Log: not supported by cvs2svn $
|
$Log: not supported by cvs2svn $
|
||||||
|
Revision 1.2 2004/03/10 00:35:24 cignoni
|
||||||
|
added a math namespace reference
|
||||||
|
|
||||||
Revision 1.1 2004/02/10 01:11:28 cignoni
|
Revision 1.1 2004/02/10 01:11:28 cignoni
|
||||||
Edited Comments and GPL license
|
Edited Comments and GPL license
|
||||||
|
|
||||||
|
@ -36,8 +39,13 @@ Edited Comments and GPL license
|
||||||
|
|
||||||
namespace vcg {
|
namespace vcg {
|
||||||
|
|
||||||
|
/** \addtogroup space */
|
||||||
|
/*@{*/
|
||||||
|
/**
|
||||||
|
The templated class for representing a point in 4D space.
|
||||||
|
The class is templated over the ScalarType class that is used to represent coordinates. All the usual
|
||||||
|
operator overloading (* + - ...) is present. This class is also the base for vcg::Color4
|
||||||
|
*/
|
||||||
template <class T> class Point4
|
template <class T> class Point4
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
|
@ -286,6 +294,7 @@ typedef Point4<int> Point4i;
|
||||||
typedef Point4<float> Point4f;
|
typedef Point4<float> Point4f;
|
||||||
typedef Point4<double> Point4d;
|
typedef Point4<double> Point4d;
|
||||||
|
|
||||||
|
/*@}*/
|
||||||
|
|
||||||
} // end namespace
|
} // end namespace
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -24,6 +24,9 @@
|
||||||
History
|
History
|
||||||
|
|
||||||
$Log: not supported by cvs2svn $
|
$Log: not supported by cvs2svn $
|
||||||
|
Revision 1.1 2004/02/13 00:44:53 cignoni
|
||||||
|
First commit...
|
||||||
|
|
||||||
|
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
@ -33,7 +36,14 @@ $Log: not supported by cvs2svn $
|
||||||
#include <vcg/space/point2.h>
|
#include <vcg/space/point2.h>
|
||||||
|
|
||||||
namespace vcg {
|
namespace vcg {
|
||||||
|
/** \addtogroup space */
|
||||||
|
/*@{*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
Templated class for a set of 2D texture coord. It for each is templated over two parameters:
|
||||||
|
the type of the tex coord and the number of texcoord to be stored. This class is intended to be used when many textures
|
||||||
|
id are shared over the same surface, so for each coord the id of the texture is stored. If no id is needed see the vcg::TCoord2Simple class.
|
||||||
|
*/
|
||||||
|
|
||||||
template<class T = float, int N = 1>
|
template<class T = float, int N = 1>
|
||||||
class TCoord2
|
class TCoord2
|
||||||
|
@ -73,9 +83,11 @@ public:
|
||||||
enum { n_coords=N};
|
enum { n_coords=N};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
Templated class for a set of 2D texture coord. It for each is templated over two
|
||||||
|
*/
|
||||||
template<class T = float>
|
template<class T = float>
|
||||||
class TCoordSimple
|
class TCoord2Simple
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
Point2<T> _t;
|
Point2<T> _t;
|
||||||
|
@ -118,15 +130,7 @@ public:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef __GL_H__
|
/*@}*/
|
||||||
|
|
||||||
|
|
||||||
//inline void glTexCoord(TCoord2<int> const & p) { glTexCoord3iv(p.v);}
|
|
||||||
//inline void glTexCoord(Point3<short> const & p) { glTexCoord3sv(p.v);}
|
|
||||||
//inline void glTexCoord(Point3<float> const & p) { glTexCoord3fv(p.v);}
|
|
||||||
//inline void glTexCoord(Point3<double> const & p){ glTexCoord3dv(p.v);}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue