# SbDPLine.3coin3 man page

SbDPLine — The **SbDPLine** class represents a line in 3D space.

**SbDPLine** is used by many other classes in Coin. It provides a way of specifying a directed line (also known as a ray) through a specified point (origin) and a direction in 3D space. Note that the line is infinite in both directions from its definition point.

## Synopsis

### Public Member Functions

**SbDPLine** (void)**SbDPLine** (const **SbVec3d** &p0, const **SbVec3d** &p1)

void **setValue** (const **SbVec3d** &p0, const **SbVec3d** &p1)

SbBool **getClosestPoints** (const **SbDPLine** &line2, **SbVec3d** &ptOnThis, **SbVec3d** &ptOnLine2) const**SbVec3d getClosestPoint** (const **SbVec3d** &point) const

const **SbVec3d** & **getPosition** (void) const

const **SbVec3d** & **getDirection** (void) const

void **print** (FILE *file) const

## Detailed Description

The **SbDPLine** class represents a line in 3D space.

**SbDPLine** is used by many other classes in Coin. It provides a way of specifying a directed line (also known as a ray) through a specified point (origin) and a direction in 3D space. Note that the line is infinite in both directions from its definition point.

Be aware that this class is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API.

**See also:****SbVec3d****Since:**Coin 2.0

## Constructor & Destructor Documentation

### SbDPLine::SbDPLine (void)

The empty constructor does nothing. The line will be uninitialized until the first assignment or **setValue()** call.

### SbDPLine::SbDPLine (const SbVec3d & p0, const SbVec3d & p1)

Constructor with *p0* specifying the line start point and *p1* the line end point. *p0* should not be the same as *p1*, as this will lead to having a null vector as the direction vector, which would cause division by zero problems in some of the other methods on this class.

## Member Function Documentation

### void SbDPLine::setValue (const SbVec3d & p0, const SbVec3d & p1)

Set new position and direction of the line by specifying line start point and end point. *p0* should not be the same as *p1*, as this will lead to having a null vector as the direction vector, which would cause division by zero problems in some of the other methods on this class.

### SbBool SbDPLine::getClosestPoints (const SbDPLine & line2, SbVec3d & ptOnThis, SbVec3d & ptOnLine2) const

Returns the two closest points on the lines. If the lines are parallel, all points are equally close and we return `FALSE`

. If the lines are not parallel, the point positions will be stored in *ptOnThis* and *ptOnLine2*, and we'll return `TRUE`

.

**See also:**

**getClosestPoint()**.

### SbVec3d SbDPLine::getClosestPoint (const SbVec3d & point) const

Returns the point on the line which is closest to *point*.

**See also:**

**getClosestPoints()**.

### const SbVec3d & SbDPLine::getPosition (void) const

Return a vector representing a point on the line.

### const SbVec3d & SbDPLine::getDirection (void) const

Return a vector representing the direction of the line. The direction vector will always be normalized.

### void SbDPLine::print (FILE * fp) const

Dump the state of this object to the *file* stream. Only works in debug version of library, method does nothing in an optimized compile.

## Author

Generated automatically by Doxygen for Coin from the source code.