2 #ifndef GEODESIC_ALGORITHM_EXACT_ELEMENTS_20071231
3 #define GEODESIC_ALGORITHM_EXACT_ELEMENTS_20071231
36 assert(x>=0.0 && x <= m_edge->length());
47 return m_d + std::abs(dx);
99 return x->
min() < y->
min();
118 return sqrt(a*a + b*b);
181 assert(offset >= 0.0 && offset <= m_edge->length());
184 while(p && p->
stop() < offset)
275 if(
x->type() !=
y->type())
277 return x->type() <
y->type();
281 return x->base_element()->id() <
y->base_element()->id();
292 typedef std::vector<SurfacePointWithIndex*> sorted_vector_type;
301 return equal_range(m_sorted.begin(),
310 m_sorted.resize(
sources.size());
311 for(
unsigned i=0; i<
sources.size(); ++i)
319 std::sort(m_sorted.begin(), m_sorted.end(), m_compare_less);
325 return *(begin() + i);
329 sorted_vector_type m_sorted;
352 if(std::abs(hs+hc) < local_epsilon)
362 d_out =
signal(end) + fabs(end - rs);
372 double ri = (rs*hc + hs*rc)/(hs+hc);
395 unsigned source_index)
void local_coordinates(Point3D *point, double &x, double &y)
void initialize(edge_pointer e)
interval_pointer covering_interval(double offset)
interval_pointer & first()
unsigned number_of_intervals()
void find_closest_point(SurfacePoint *point, double &offset, double &distance, interval_pointer &interval)
DirectionType & direction()
void compute_min_distance(double stop)
double hypotenuse(double a, double b)
interval_pointer & next()
bool operator()(interval_pointer const x, interval_pointer const y) const
unsigned & source_index()
bool visible_from_source()
DirectionType m_direction
void initialize(edge_pointer edge, SurfacePoint *point=NULL, unsigned source_index=0)
void find_closest_point(double const x, double const y, double &offset, double &distance)
double max_distance(double end)
std::pair< sorted_iterator, sorted_iterator > sorted_iterator_pair
sorted_iterator_pair sources(base_pointer mesh_element)
sorted_vector_type::iterator sorted_iterator
SurfacePointWithIndex & operator[](unsigned i)
void initialize(std::vector< SurfacePoint > &sources)
bool operator()(SurfacePointWithIndex *x, SurfacePointWithIndex *y) const
void initialize(SurfacePoint &p, unsigned index)
base_pointer & base_element()
void initialize(SurfacePoint const &p)
double const GEODESIC_INF
double const SMALLEST_INTERVAL_RATIO
Interval * interval_pointer
IntervalList * list_pointer