---
name: "SbLineProjector"
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/SbLineProjector"
---

# SbLineProjector(3)

The SbLineProjector class projects 2D points to 3D points along a line.

## NAME

SbLineProjector - The **SbLineProjector** class projects 2D points to 3D points along a line.

## SYNOPSIS

\#include \<Inventor/projectors/SbLineProjector.h\>

Inherits **SbProjector**.

### Public Member Functions

**SbLineProjector** (void)\
 virtual **SbProjector** \* **copy** (void) const\
 virtual **SbVec3f** **project** (const **SbVec2f** &point)\
 virtual SbBool **tryProject** (const **SbVec2f** &point, const float epsilon, **SbVec3f** &result)\
 void **setLine** (const **SbLine** &**line**)\
 const **SbLine** & **getLine** (void) const\
 virtual **SbVec3f** **getVector** (const **SbVec2f** &viewpos1, const **SbVec2f** &viewpos2)\
 virtual **SbVec3f** **getVector** (const **SbVec2f** &viewpos)\
 void **setStartPosition** (const **SbVec2f** &viewpos)\
 void **setStartPosition** (const **SbVec3f** &point)\

Public Member Functions inherited from **SbProjector** virtual void **setViewVolume** (const **SbViewVolume** &vol)\
 const **SbViewVolume** & **getViewVolume** (void) const\
 virtual void **setWorkingSpace** (const **SbMatrix** &space)\
 const **SbMatrix** & **getWorkingSpace** (void) const\

### Protected Attributes

**SbLine** **line**\
 **SbVec3f** **lastPoint**\

Protected Attributes inherited from **SbProjector** **SbViewVolume** **viewVol**\
 **SbMatrix** **worldToWorking**\
 **SbMatrix** **workingToWorld**\

### Additional Inherited Members

Protected Member Functions inherited from **SbProjector** **SbProjector** (void)\
 virtual **~SbProjector** ()\
 **SbLine** **getWorkingLine** (const **SbVec2f** &point) const\
 float **findVanishingDistance** (void) const\
 SbBool **verifyProjection** (const **SbVec3f** &projpt) const\

## Detailed Description

The **SbLineProjector** class projects 2D points to 3D points along a line.

The 3D projection of the 2D coordinates is for this projector class constrained to lie along a predefined line.

Among other places, this is useful within the translation draggers, like for instance **SoTranslate1Dragger**, where we want to move "pieces" along one or more axes.

## Constructor & Destructor Documentation

### SbLineProjector::SbLineProjector (void )

Constructor. Initializes the projector instance to use a line from \<0, 0, 0\> to \<0, 1, 0\>.

## Member Function Documentation

### SbProjector \* SbLineProjector::copy (void ) const \[virtual\]

Construct and return a copy of this projector. The caller is responsible for destructing the new instance.

**Note that if the Coin library has been built as a DLL under Microsoft Windows and you use this method from application code, you** *must* **make sure that both the Coin DLL and the application executable are using the same instance of a C Run-Time (CRT) library. Otherwise, you** *will* **get memory heap corruption upon deallocating the returned instances, eventually leading to mysterious crashes.**\

*Implements* **SbProjector***.*

### SbVec3f SbLineProjector::project (const SbVec2f & point) \[virtual\]

*Project the 2D point from normalized viewport coordinates to a 3D point. The mapping will be done in accordance with the type of the projector.*

*Implements* **SbProjector***.*

### SbBool SbLineProjector::tryProject (const SbVec2f & point, const float epsilon, SbVec3f & result) \[virtual\]

*Try projecting the 2D point from normalized viewport coordinates to a 3D point. The mapping will be done in accordance with the type of the projector.*

*If the projection can't be done safely (for instance when the projection plane or line is parallel to the view volume projection), this function should return FALSE.*

*Default implementation will call* **project()** *and always return TRUE, but subclasses can override this behavior to support safe projections.*

**Since**

*Coin 3.0*

*Reimplemented from* **SbProjector***.*

### void SbLineProjector::setLine (const SbLine & lineref)

*Set a new projection line. 3D points will be mapped to be on this line.*

### const SbLine & SbLineProjector::getLine (void ) const

*Returns the currently set projection line.*

### SbVec3f SbLineProjector::getVector (const SbVec2f & viewpos1, const SbVec2f & viewpos2) \[virtual\]

*Calculates and returns a vector between the projected 3D position of viewpos1 and viewpos2.*

### SbVec3f SbLineProjector::getVector (const SbVec2f & viewpos) \[virtual\]

*Returns the 3D vector between the last projection and the one calculated for viewpos.*

### void SbLineProjector::setStartPosition (const SbVec2f & viewpos)

*Explicitly set position of initial projection, so we get correct values for later calls to* **getVector()** *etc.*

### void SbLineProjector::setStartPosition (const SbVec3f & point)

*Explicitly set position of initial projection, so we get correct values for later calls to* **getVector()** *etc.*

## Member Data Documentation

### SbLine SbLineProjector::line \[protected\]

*The projection line. Projected 3D points will be constrained to be on this line.*

### SbVec3f SbLineProjector::lastPoint \[protected\]

*The last projected point.*

## Author

*Generated automatically by Doxygen for Coin from the source code.*
