Line3

#include <Imath/ImathLine.h>

The Line3 class template represents a line in 3D space, with predefined typedefs for lines of type float and double.

There are also various utility functions that operate on Line3 objects defined in ImathLineAlgo.h and described in Line Functions.

Example:

#include <Imath/ImathLine.h>

void
line3_example()
{
    Imath::V3f   a (0.0f, 0.0f, 0.0f);
    Imath::V3f   b (1.0f, 1.0f, 1.0f);

    Imath::Line3f line (a, b);
  
    assert (line.pos == a);
    assert (line.dir == (b-a).normalized());
    
    Imath::V3f   c (0.5f, 0.5f, 0.5f);

    float f = line.distanceTo (c);
    assert (Imath::equalWithAbsError (f, 0.0f, 0.0001f));

    Imath::V3f p = line (0.5f); // midpoint, i.e. 0.5 units from a along (b-a)

    assert (p.equalWithAbsError (Imath::V3f (0.288675f, 0.288675f, 0.288675f), 0.0001f));
}
typedef Line3<float> Imath::Line3f

Line of type float.

typedef Line3<double> Imath::Line3d

Line of type double.

template<class T>
class Imath::Line3

The Line3 class represents a 3D line, defined by a point and a direction vector.

Direct access to member fields

Vec3<T> pos

A point on the line.

Vec3<T> dir

The direction of the line.

Constructors

inline constexpr Line3() noexcept

Uninitialized by default.

inline constexpr Line3(const Vec3<T> &point1, const Vec3<T> &point2) noexcept

Initialize with two points.

The direction is the difference between the points.

Manipulation

inline void set(const Vec3<T> &point1, const Vec3<T> &point2) noexcept

Set the line defined by two points.

The direction is the difference between the points.

Utility Methods

inline constexpr Vec3<T> operator()(T parameter) const noexcept

Return the point on the line at the given parameter value, e.g.

L(t)

inline constexpr T distanceTo(const Vec3<T> &point) const noexcept

Return the distance to the given point.

inline constexpr T distanceTo(const Line3<T> &line) const noexcept

Return the distance to the given line.

inline constexpr Vec3<T> closestPointTo(const Vec3<T> &point) const noexcept

Return the point on the line closest to the given point.

inline constexpr Vec3<T> closestPointTo(const Line3<T> &line) const noexcept

Return the point on the line closest to the given line.

template<class T>
std::ostream &Imath::operator<<(std::ostream &o, const Line3<T> &line)

Stream output, as “(pos dir)”.