---
name: "SbLine"
section: "3"
platform: "linux"
package: "coin"
version: "1:4.0.10-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/SbLine"
---

# SbLine(3)

The SbLine class represents a line in 3D space.

## NAME

SbLine - The **SbLine** class represents a line in 3D space.

## SYNOPSIS

\#include \<Inventor/SbLine.h\>

### Public Member Functions

**SbLine** (void)\
 **SbLine** (const **SbVec3f** &origin, const **SbVec3f** &point)\
 void **setValue** (const **SbVec3f** &origin, const **SbVec3f** &point)\
 void **setPosDir** (const **SbVec3f** &position, const **SbVec3f** &direction)\
 SbBool **getClosestPoints** (const **SbLine** &line2, **SbVec3f** &ptOnThis, **SbVec3f** &ptOnLine2) const\
 **SbVec3f** **getClosestPoint** (const **SbVec3f** &point) const\
 const **SbVec3f** & **getPosition** (void) const\
 const **SbVec3f** & **getDirection** (void) const\
 void **print** (FILE \*file) const\

## Detailed Description

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

**SbLine** provides a way of specifying a directed line, through a 3D point (origin) and a vector direction in 3D space.

It is context dependent whether or not an **SbLine** is considered as a *ray* extending from the starting point in only one direction, or as a *line* intersecting the origin point and extending infinitely from it in both directions.

**SbLine** is used by many other classes in Coin.

**See also**

**SbVec3f**

## Constructor & Destructor Documentation

### SbLine::SbLine (void )

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

### SbLine::SbLine (const SbVec3f & origin, const SbVec3f & point)

Constructor with *origin* specifying the line origin point, and *point* specifying another point on the line that is used to determine the line's direction. *point* should not be the same as *origin*, as this will lead to the line having a null vector as the direction vector. This will cause division by zero problems in some of the other methods on this class.

Be aware that the direction vector will be normalized and not be the same as *point* - *origin*.

**See also**

**setValue**, **setPosDir**, getOrigin, **getDirection**

## Member Function Documentation

### void SbLine::setValue (const SbVec3f & origin, const SbVec3f & point)

Set new position and direction of the line by specifying line origin and another point on the line that is used to determine the line's direction. *point* should not be the same as *origin*, as this will lead to having a null vector as the direction vector. This will cause division by zero problems in some of the other methods on this class.

Be aware that the direction vector will be normalized and not be the same as *point* - *origin*.

Method *setPosDir(position, direction)* should be preferred over a call to *setValue(position, position + direction)*, because the latter causes numerical problems when *position* has a very large magnitude and *direction* is a normalized direction vector.

**See also**

**setPosDir**, getOrigin, **getDirection**

### void SbLine::setPosDir (const SbVec3f & position, const SbVec3f & direction)

Set position and direction.

Be aware that the direction vector will be normalized and not be the same as provided to this method.

**See also**

**setValue**, getOrigin, **getDirection**

**Since**

Coin 4.0

### SbBool SbLine::getClosestPoints (const SbLine & line2, SbVec3f & ptOnThis, SbVec3f & 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.

Note that both **SbLine** instances are considered to be infinite in both directions from their definition points, as far as this function is concerned.

**See also**

**getClosestPoint()**.

### SbVec3f SbLine::getClosestPoint (const SbVec3f & point) const

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

```
                    _
             Q      D
    SP x-----x------->
        \    |
         \   |
          \  |
           \ |
            \|
             x P
 P = argument point            _
 SP = line starting point, and D = line direction of this line
 Q = point to find and return from function
```

The vector defined by *point* and the returned point will be normal to the line.

Note that the **SbLine** instance is considered to be infinite in both directions from its definition point, as far as this function is concerned.

**See also**

**getClosestPoints()**.

### const SbVec3f & SbLine::getPosition (void ) const

Return a vector representing the origin point on the line.

**See also**

**setValue**

### const SbVec3f & SbLine::getDirection (void ) const

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

### void SbLine::print (FILE \* fp) const

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

## Author

Generated automatically by Doxygen for Coin from the source code.
