Next: Planes ( d3_plane ) Up: Basic Data Types for Previous: Segments in 3D-Space (   Contents   Index

# Straight Lines in 3D-Space ( d3_line )

Definition

An instance l of the data type d3_line is a directed straight line in three-dimensional space.

#include < LEDA/geo/d3_line.h >

Creation

 d3_line l(const d3_point& p1, const d3_point& p2) introduces a variable l of type d3_line. l is initialized to the line through points p1,p2. Precondition: p1 != p2. d3_line l(const d3_segment& s) introduces a variable l of type d3_line. l is initialized to the line supporting segment s. Precondition: s is not trivial. d3_line l introduces a variable l of type d3_line. l is initialized to the line through points (0,0,0) and (1,0,0).

Operations

 bool l.contains(const d3_point& p) returns true if p lies on l. d3_point l.point1() returns a point on l. d3_point l.point2() returns a second point on l. d3_segment l.seg() returns a non-trivial segment on l with the same direction. bool l.project_xy(line& m) if the projection of l into the xy plane is not a point, the function returns true and assignes the projection to m. Otherwise false is returned. bool l.project_xz(line& m) if the projection of l into the xz plane is not a point, the function returns true and assignes the projection to m. Otherwise false is returned. bool l.project_yz(line& m) if the projection of l into the yz plane is not a point, the function returns true and assignes the projection to m. Otherwise false is returned. bool l.project(const d3_point& p, const d3_point& q, const d3_point& v, d3_line& m) if the projection of l into the plane through (p,q,v) is not a point, the function returns true and assignes the projection to m. Otherwise false is returned. d3_line l.translate(double dx, double dy, double dz) returns l translated by vector (dx,dy,dz). d3_line l.translate(const vector& v) returns l translated by v. Precond.: v.dim()=3. d3_line l + const vector& v returns l translated by vector v. d3_line l - const vector& v returns l translated by vector - v. d3_line l.reflect(const d3_point& p, const d3_point& q, const d3_point& v) returns l reflected across the plane through (p,q,v). d3_line l.reflect(const d3_point& p) returns l reflected across point p. d3_line l.reverse() returns l reversed. vector l.to_vector() returns point2()-point1(). bool l.intersection(const d3_segment& s) decides, whether l and s intersect in a single point. bool l.intersection(const d3_segment& s, d3_point& p) decides, whether l and s intersect in a single point. If so, the point of intersection is assigned to p. bool l.intersection(const d3_line& m) decides, whether l and m intersect. bool l.intersection(const d3_line& m, d3_point& p) decides, whether l and m intersect in a single point. If so, the point of intersection is assigned to p. double l.sqr_dist(const d3_point& p) returns the square of the distance between l and p. double l.distance(const d3_point& p) returns the distance between l and p.

Next: Planes ( d3_plane ) Up: Basic Data Types for Previous: Segments in 3D-Space (   Contents   Index