|
MEPP2 Project
|
The Geometry API is provided by the Geometry concept detailed below.
See also:
The Geometry concept provides an abstraction layer to manipulate the geometry of the real datastructures. For example the Point type of the CGAL Surface_mesh datastructure is different from the Point type of the AIF datastructure. So we need this abstraction layer to define a common interface that is supported by all datastructures. This allow to write an algorithm in a generic way.
The interface implementing the Geometry concept for a datastructure is defined by the specialization of the FEVV::Geometry_traits< > class for this datastructure. The various Geometry_traits specializations are defined in the Wrappings/Geometry_traits_....h files.
G A FEVV::Geometry_traits< > type.gt An object of type G.p,q, r Objects of type Point.x, y, z Objects of type Scalar.v, u Objects of type Vector.| Type | Reference | Description |
|---|---|---|
G::Scalar | Affine coordinates | A type used to represent the coordinate of a Point. |
G::Point | Point of affine space | The type "aggregating" Scalar coordinates. |
G::Vector | Affine "substraction" | The type of an element of the associated vector space. |
| Expression | Returns | Description |
|---|---|---|
Point(x, y, z) | Point | Constructor of the Point defined its respective given coordinates. |
q(p) | Point | Point copy constructor. |
q = p | Point | Point assignement operator. |
ORIGIN | Point | The point at the origin. |
gt.get_x(p) | Scalar | Returns the 1st coordinate of point p. |
gt.get_y(p) | Scalar | Returns the 2nd coordinate of point p. |
gt.get_z(p) | Scalar | Returns the 3rd coordinate of point p. |
Vector(x, y, z) | Vector | Constructor of the Vector defined its respective given coordinates. |
u(v) | Vector | Vector copy constructor. |
u = v | Vector | Vector assignement operator. |
NULL_VECTOR | Vector | The zero length vector. |
v[0] | Scalar | Returns the 1st coordinate of vector v (read only). |
v[1] | Scalar | Returns the 2nd coordinate of vector v (read only). |
v[2] | Scalar | Returns the 3rd coordinate of vector v (read only). |
gt.normalize(v) | Vector | Returns the normalization of vector 'v'. |
gt.length2(v) | Scalar | Returns the square of the length of vector v. |
gt.length(v) | Scalar | Returns the length of vector v. |
gt.length(p, q) | Scalar | Returns the distance between points p and q. |
gt.normal(p, q, r) | Vector | Returns a vector that is normal to the plane passing through points p, q and r. |
gt.unit_normal(p, q, r) | Vector | Returns a unit vector that is normal to the plane passing through points p, q and r. |
gt.add_v(u, v) | Vector | Returns the sum of vectors u and v. |
gt.add_pv(p, v) | Point | Returns the sum of point p and vector v. |
gt.sub_v(u, v) | Vector | Returns the sum of vector u and the opposite of vector v. |
gt.sub_pv(p, v) | Point | Returns the sum of point p and the opposite of vector v. |
gt.sub_p(p, q) | Vector | Returns the vector from point q to point p. |
gt.scalar_mult(v, s) | Vector | Returns the multiplication of vector v by scalar s. |
gt.dot_product(u, v) | Scalar | Returns the dot product of vectors u and v. |
gt.cross_product(u, v) | Vector | Returns the cross product of vectors u and v. |
Notes:
the current implementation misses to enable the following expressions
p + q which returns a Pointp - q which returns a Vectorp + v which returns a Pointbecause they are not supported by the Point and Vector types of all datastructures.