added range (for near and far computation)

This commit is contained in:
Federico Ponchio 2010-04-25 20:37:59 +00:00
parent 8331ee9981
commit 975ecd103e
1 changed files with 10 additions and 2 deletions

View File

@ -70,9 +70,10 @@ public:
Point3<T> ViewPoint();
T Resolution(float dist = 1);
bool IsOutside(Point3<T> &point);
float Remoteness(Point3<T> &point, T radius);
T Remoteness(Point3<T> &point, T radius);
bool IsOutside(Point3<T> &point, T radius);
T Distance(Point3<T> &point, int plane);
T range(Point3<T> &point, T radius, T &closest, T &farthest);
protected:
T resolution;
@ -103,7 +104,7 @@ template <class T> bool Frustum<T>::IsOutside(Point3<T> &point) {
return false;
}
template <class T> float Frustum<T>::Remoteness(Point3<T> &point, T radius) {
template <class T> T Frustum<T>::Remoteness(Point3<T> &point, T radius) {
Point3<T> r = Project(point);
T dist = (point - view_point).Norm();
if(dist < radius) return 0;
@ -133,6 +134,13 @@ template <class T> bool Frustum<T>::IsOutside(Point3<T> &point, T radius) {
return false;
}
template <class T> T Frustum<T>::range(Point3<T> &point, T radius, T &closest, T &farthest) {
//4 near 5 far
T dist = (view_point - point).Norm();
closest = dist - radius;
farthest = dist + radius;
}
template <class T> T Frustum<T>::Distance(Point3<T> &point, int plane) {
return vcg::Distance(planes[plane], point);
}