next up previous contents index
Next: Rational Segments in 3D-Space Up: Basic Data Types for Previous: Straight Rational Rays in   Contents   Index


Rational Lines in 3D-Space ( d3_rat_line )

Definition

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

#include < LEDA/d3 _rat _line.h >

Creation

d3_rat_line l(d3_rat_point p1, d3_rat_point p2)
    introduces a variable l of type d3_rat_line. l is initialized to the line through points p1,p2.

d3_rat_line l(d3_rat_segment s) introduces a variable l of type d3_rat_line. l is initialized to the line supporting segment s.

d3_rat_line l introduces a variable l of type d3_rat_line. l is initialized to the line through points (0,0,0,1) and (1,0,0,1).

Operations

d3_line l.to_float() returns a floating point approximation of l.

bool l.contains(d3_rat_point p)
    returns true if p lies on l.

d3_rat_point l.point1() returns a point on l.

d3_rat_point l.point2() returns a second point on l.

d3_rat_segment l.seg() returns a segment on l.

bool l.project_xy(rat_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(rat_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(rat_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(d3_rat_point p, d3_rat_point q, d3_rat_point v, d3_rat_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_rat_line l.translate(integer dx, integer dy, integer dz, integer dw)
    returns l translated by vector (dx/dw,dy/dw,dz/dw).

d3_rat_line l.translate(rat_vector v) returns l translated by v.
Precond.: v.dim()=3.

d3_rat_line l + rat_vector v returns l translated by vector v.

d3_rat_line l - rat_vector v returns l translated by vector - v.

d3_rat_line l.reflect(d3_rat_point p, d3_rat_point q, d3_rat_point v)
    returns l reflected across the plane through (p,q,v).

d3_rat_line l.reflect(d3_rat_point p) returns l reflected across point p.

d3_rat_line l.reverse() returns l reversed.

rat_vector l.to_vector() returns point2()-point1().

bool l.intersection(d3_rat_segment s)
    decides, whether l and s intersect in a single point.

bool l.intersection(d3_rat_segment s, d3_rat_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(d3_rat_line m)
    decides, whether l and m intersect in a single point.

bool l.intersection(d3_rat_line m, d3_rat_point& p)
    decides, whether l and m intersect in a single point. If so, the point of intersection is assigned to p.

rational l.sqr_dist(d3_rat_point p)
    returns the square of the distance between l and p.


next up previous contents index
Next: Rational Segments in 3D-Space Up: Basic Data Types for Previous: Straight Rational Rays in   Contents   Index
LEDA research project
2000-02-09