2 #ifndef GEODESIC_MESH_ELEMENTS_20071231
3 #define GEODESIC_MESH_ELEMENTS_20071231
17 class MeshElementBase;
36 unsigned size(){
return m_size;};
40 template<
class DataPo
inter>
51 return *(m_begin + i);
112 double*
xyz(){
return m_coordinates;};
113 double&
x(){
return *m_coordinates;};
114 double&
y(){
return *(m_coordinates+1);};
115 double&
z(){
return *(m_coordinates+2);};
117 void set(
double new_x,
double new_y,
double new_z)
133 double dx = m_coordinates[0] - v[0];
134 double dy = m_coordinates[1] - v[1];
135 double dz = m_coordinates[2] - v[2];
137 return sqrt(dx*dx + dy*dy + dz*dz);
160 double m_coordinates[3];
176 bool m_saddle_or_boundary;
196 for(
unsigned i=0; i<3; ++i)
200 return m_corner_angles[i];
210 double m_corner_angles[3];
279 x = m_length/2.0 + (d0*d0 - d1*d1)/(2.0*m_length);
280 y = sqrt(
std::max(0.0, d0*d0 - x*x));
319 x() = b*v0->
x() + a*v1->
x();
320 y() = b*v0->
y() + a*v1->
y();
321 z() = b*v0->
z() + a*v1->
z();
350 for(
unsigned i=0; i<3; ++i)
364 for(
unsigned i=0; i<3; ++i)
380 for(
unsigned i=0; i<3; ++i)
bool belongs(vertex_pointer v)
vertex_pointer opposite_vertex(vertex_pointer v)
void local_coordinates(Point3D *point, double &x, double &y)
face_pointer opposite_face(face_pointer f)
vertex_pointer opposite_vertex(edge_pointer e)
edge_pointer opposite_edge(vertex_pointer v)
edge_pointer next_edge(edge_pointer e, vertex_pointer v)
double vertex_angle(vertex_pointer v)
edge_pointer_vector m_adjacent_edges
SimpleVector< edge_pointer > edge_pointer_vector
SimpleVector< face_pointer > face_pointer_vector
face_pointer_vector m_adjacent_faces
vertex_pointer_vector & adjacent_vertices()
edge_pointer_vector & adjacent_edges()
SimpleVector< vertex_pointer > vertex_pointer_vector
vertex_pointer_vector m_adjacent_vertices
face_pointer_vector & adjacent_faces()
void set(double new_x, double new_y, double new_z)
double distance(double *v)
double distance(Point3D *v)
Data & operator[](unsigned i)
void set_allocation(DataPointer begin, unsigned size)
SurfacePoint(vertex_pointer v)
base_pointer & base_element()
SurfacePoint(face_pointer f)
SurfacePoint(base_pointer g, double x, double y, double z, PointType t=UNDEFINED_POINT)
SurfacePoint(edge_pointer e, double a=0.5)
void initialize(SurfacePoint const &p)
bool & saddle_or_boundary()
float max(float x, float y)
MeshElementBase * base_pointer
bool operator<(const HalfEdge &x, const HalfEdge &y)
bool operator==(const HalfEdge &x, const HalfEdge &y)
bool operator!=(const HalfEdge &x, const HalfEdge &y)