RobWorkProject
23.9.11-
|
A line in 3D, described by a two points. More...
#include <Line.hpp>
Inherits Primitive.
Inherited by Ray.
Public Types | |
typedef rw::core::Ptr< Line > | Ptr |
Smart pointer to Line. | |
typedef double | value_type |
Type of internal values. | |
Public Types inherited from Primitive | |
typedef rw::core::Ptr< Primitive > | Ptr |
Smart pointer to this type of class. | |
Public Types inherited from GeometryData | |
enum | GeometryType { PointCloud , LineMesh , PlainTriMesh , IdxTriMesh , SpherePrim , BoxPrim , OBBPrim , AABBPrim , LinePrim , PointPrim , PyramidPrim , ConePrim , TrianglePrim , CylinderPrim , TubePrim , PlanePrim , RayPrim , Implicit , Quadratic , UserType } |
geometry data types | |
typedef rw::core::Ptr< GeometryData > | Ptr |
smart pointer type to this class | |
typedef rw::core::Ptr< const GeometryData > | CPtr |
const smart pointer type to this class | |
Public Member Functions | |
Line () | |
Constructor. More... | |
Line (const rw::math::Q ¶ms) | |
Constructor. More... | |
Line (const rw::math::Vector3D< double > &p1, const rw::math::Vector3D< double > &p2) | |
Constructor. More... | |
virtual | ~Line () |
destructor | |
rw::math::Vector3D< double > & | p1 () |
Get point 1. | |
const rw::math::Vector3D< double > & | p1 () const |
Get point 1. | |
rw::math::Vector3D< double > & | p2 () |
Get point 2. | |
const rw::math::Vector3D< double > & | p2 () const |
Get point 2. | |
rw::math::Vector3D< double > | dir () const |
Get a direction vector u = normalize(p2 - p1). | |
double | distance (const rw::math::Vector3D< double > &point) const |
Calculates the shortest distance from a point to the line. More... | |
double | distance (const Line &line) const |
Calculates the shortest distance to another line. More... | |
rw::math::Vector3D< double > | closestPoint (const rw::math::Vector3D< double > &point) const |
Finds a point on the line closest to specified point. More... | |
double | refit (const std::vector< rw::math::Vector3D< double >> &data) |
Fit this line to a set of points. More... | |
double | refit (const std::vector< rw::math::Vector3D< double >>::const_iterator begin, const std::vector< rw::math::Vector3D< double >>::const_iterator end) |
TriMesh::Ptr | createMesh (int resolution) const |
make a trimesh from this primitive. Use granularity to specify minimum number of line segments a half circle is split into More... | |
virtual rw::math::Q | getParameters () const |
get the parameters that define this primitive More... | |
virtual void | setParameters (const rw::math::Q &q) |
set the parameters that define this primitive More... | |
GeometryType | getType () const |
the type of this primitive More... | |
Public Member Functions inherited from Primitive | |
virtual | ~Primitive () |
destructor | |
TriMesh::Ptr | getTriMesh (bool forceCopy=true) |
gets a trimesh representation of this geometry data. More... | |
virtual bool | isConvex () |
test if this geometry data is convex More... | |
bool | isInside (const rw::math::Vector3D< double > &point) |
test if a point is on the border or inside this primitive | |
Public Member Functions inherited from GeometryData | |
virtual | ~GeometryData () |
Destructor. | |
Static Public Member Functions | |
static std::vector< Line > | makeGrid (int dim_x, int dim_y, double size_x=1.0, double size_y=1.0, const rw::math::Vector3D< double > &xdir=rw::math::Vector3D< double >::x(), const rw::math::Vector3D< double > &ydir=rw::math::Vector3D< double >::y()) |
Create set of lines making a grid. | |
static rw::math::Metric< Line >::Ptr | makeMetric (double angToDistWeight=1.0) |
create a metric that can be used to compare the difference between two lines. The distance between two lines is computed as follows: More... | |
Static Public Member Functions inherited from GeometryData | |
static std::string | toString (GeometryType type) |
format GeometryType to string More... | |
Friends | |
std::ostream & | operator<< (std::ostream &out, const Line &line) |
Streaming operator. | |
Additional Inherited Members | |
Protected Member Functions inherited from Primitive | |
virtual bool | doIsInside (const rw::math::Vector3D< double > &point) |
Check if point lies inside geometry. More... | |
Primitive (int levels=20) | |
Constructor. More... | |
A line in 3D, described by a two points.
Line | ( | ) |
Constructor.
Default constructor returns line segment from {0, 0, 0} to {0, 0, 1}.
Line | ( | const rw::math::Q & | params | ) |
Constructor.
params | [in] must be 6 long and contain 2 points lying on the line |
Line | ( | const rw::math::Vector3D< double > & | p1, |
const rw::math::Vector3D< double > & | p2 | ||
) |
Constructor.
p1 | [in] point 1. |
p2 | [in] point 2. |
rw::math::Vector3D<double> closestPoint | ( | const rw::math::Vector3D< double > & | point | ) | const |
Finds a point on the line closest to specified point.
For the purposes of this calculation, the line is treated as infinitely extending geometric entity, without begining nor end.
|
inlinevirtual |
double distance | ( | const Line & | line | ) | const |
Calculates the shortest distance to another line.
For the purposes of this calculation, the lines are treated as infinitely extending geometric entity, without begining nor end.
double distance | ( | const rw::math::Vector3D< double > & | point | ) | const |
Calculates the shortest distance from a point to the line.
For the purposes of this calculation, the line is treated as infinitely extending geometric entity, without begining nor end.
|
inlinevirtual |
|
inlinevirtual |
|
static |
create a metric that can be used to compare the difference between two lines. The distance between two lines is computed as follows:
val = 0.5*angle(l1.dir, l2.dir)*angToDistWeight + 0.5*l1.distance(l2)
double refit | ( | const std::vector< rw::math::Vector3D< double >> & | data | ) |
Fit this line to a set of points.
Uses centroid calculation and SVD analysis to determine the parameters of the line. p1 is the point on the line closest to origin {0, 0, 0}, and p2 is chosen so as (p2 - p1) is an unit vector. Error is the sum of point distances to the line squared.
data | [in] a set of points |
double refit | ( | const std::vector< rw::math::Vector3D< double >>::const_iterator | begin, |
const std::vector< rw::math::Vector3D< double >>::const_iterator | end | ||
) |
This version of refit makes it possible to fit only a subset of the points in a vector.
begin | [in] iterator to first element. |
end | [in] iterator to last element. |
|
virtual |
set the parameters that define this primitive
Implements Primitive.