\begin{ccRefClass} {Line_3} \ccDefinition An object \ccStyle{l} of the data type \ccRefName\ is a directed straight line in the three-dimensional Euclidean space $\E^3$. \ccCreation \ccCreationVariable{l} \ccHidden \ccConstructor{Line_3();} {introduces an uninitialized variable \ccVar.} \ccHidden \ccConstructor{Line_3(const Line_3 &h);} {copy constructor.} \ccConstructor{Line_3(const Point_3 &p, const Point_3 &q);} {introduces a line \ccVar\ passing through the points $p$ and $q$. Line \ccVar\ is directed from $p$ to $q$.} \ccConstructor{Line_3(const Point_3 &p, const Direction_3&d)} {introduces a line \ccVar\ passing through point $p$ with direction $d$.} \ccConstructor{Line_3(const Point_3 &p, const Vector_3&v)} {introduces a line \ccVar\ passing through point $p$ and oriented by $v$.} \ccConstructor{Line_3(const Segment_3 &s);} {returns the line supporting the segment $s$, oriented from source to target.} \ccConstructor{Line_3(const Ray_3 &r);} {returns the line supporting the ray $r$, with the same orientation.} \ccOperations \ccSetThreeColumns{Direction_3 }{}{\hspace*{8.5cm}} \ccHidden \ccMethod{Line_3 & operator=(const Line_3 &h);} {Assignment.} \ccMethod{bool operator==(const Line_3 &h) const;} {Test for equality: two lines are equal, iff they have a non empty \ccHtmlNoLinksFrom{intersection} and the same direction.} \ccMethod{bool operator!=(const Line_3 &h) const;} {Test for inequality.} \ccMethod{Point_3 projection(const Point_3 &p) const;} {returns the orthogonal \ccHtmlNoLinksFrom{projection} of $p$ on \ccVar.} \ccMethod{Point_3 point(int i) const;} {returns an arbitrary point on \ccVar. It holds \ccStyle{point(i) = point(j)}, iff \ccStyle{i=j}.} \ccPredicates \ccMethod{bool is_degenerate() const;} {returns \ccc{true} iff line \ccVar\ is degenerated to a point.} \ccMethod{bool has_on(const Point_3 &p) const;} {returns \ccc{true} iff \ccc{p} lies on \ccVar.} \ccHeading{Miscellaneous} \ccMethod{Plane_3 perpendicular_plane(const Point_3 &p) const;} {returns the plane perpendicular to \ccVar\ passing through $p$.} \ccMethod{Line_3 opposite() const;} {returns the line with opposite direction.} \ccMethod{Vector_3 to_vector() const;} {returns a vector having the same direction as \ccVar.} \ccMethod{Direction_3 direction() const;} {returns the direction of \ccVar.} \ccMethod{Line_3 transform(const Aff_transformation_3 &t) const;} {returns the line obtained by applying $t$ on a point on \ccVar\ and the direction of \ccVar.} \ccSeeAlso \ccRefConceptPage{Kernel::Line_3} \end{ccRefClass}