Coin Logo http://www.sim.no
http://www.coin3d.org

Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
SbProjector Class Referenceabstract

The SbProjector class is the abstract base projector class.Projectors are used in the Coin library for mapping 2D coordinates (typically from the position of the mouse cursor in the rendering window) to 3D "world" coordinates. More...

#include <Inventor/projectors/SbProjector.h>

Inheritance diagram for SbProjector:
SbCylinderProjector SbLineProjector SbPlaneProjector SbSphereProjector SbCylinderSectionProjector SbCylinderSheetProjector SbSphereSectionProjector SbSphereSheetProjector SbCylinderPlaneProjector SbSpherePlaneProjector

Public Member Functions

virtual SbVec3f project (const SbVec2f &point)=0
 
virtual void setViewVolume (const SbViewVolume &vol)
 
const SbViewVolumegetViewVolume (void) const
 
virtual void setWorkingSpace (const SbMatrix &space)
 
const SbMatrixgetWorkingSpace (void) const
 
virtual SbProjectorcopy (void) const =0
 

Protected Member Functions

 SbProjector (void)
 
virtual ~SbProjector ()
 
SbLine getWorkingLine (const SbVec2f &point) const
 
float findVanishingDistance (void) const
 
SbBool verifyProjection (const SbVec3f &projpt) const
 

Protected Attributes

SbViewVolume viewVol
 
SbMatrix worldToWorking
 
SbMatrix workingToWorld
 

Detailed Description

The SbProjector class is the abstract base projector class.

Projectors are used in the Coin library for mapping 2D coordinates (typically from the position of the mouse cursor in the rendering window) to 3D "world" coordinates.

Mapping 2D coordinates to 3D coordinates is something which is done extensively in the dragger classes, to provide the user with a convenient and natural way of interacting with the 3D geometry of scenes.

For a usage example, see the class documentation for SbSphereSheetProjector.

The application programmer should normally not need to care about the projector classes, unless there are special needs in the application.

See also
SoDragger

Constructor & Destructor Documentation

◆ SbProjector()

SbProjector::SbProjector ( void  )
protected

The constructor initializes the workingspace matrix to an identity matrix.

References SbMatrix::makeIdentity(), workingToWorld, and worldToWorking.

◆ ~SbProjector()

SbProjector::~SbProjector ( )
inlineprotectedvirtual

Destructor is protected, as this is an abstract class.

Member Function Documentation

◆ project()

SbVec3f SbProjector::project ( const SbVec2f point)
pure virtual

◆ setViewVolume()

void SbProjector::setViewVolume ( const SbViewVolume vol)
virtual

◆ getViewVolume()

const SbViewVolume & SbProjector::getViewVolume ( void  ) const

Return the current viewing volume used by the projections.

See also
setViewVolume()

References viewVol.

Referenced by SbCylinderProjector::isPointInFront(), and SbSphereProjector::isPointInFront().

◆ setWorkingSpace()

void SbProjector::setWorkingSpace ( const SbMatrix space)
virtual

◆ getWorkingSpace()

const SbMatrix & SbProjector::getWorkingSpace ( void  ) const

Returns projector-to-world matrix.

See also
setWorkingSpace()

References workingToWorld.

◆ copy()

SbProjector * SbProjector::copy ( void  ) const
pure 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 is 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.

Implemented in SbCylinderSectionProjector, SbSphereSectionProjector, SbCylinderPlaneProjector, SbCylinderSheetProjector, SbSpherePlaneProjector, SbLineProjector, SbPlaneProjector, and SbSphereSheetProjector.

Referenced by SoRotateCylindricalDragger::copyContents(), and SoRotateSphericalDragger::copyContents().

◆ getWorkingLine()

SbLine SbProjector::getWorkingLine ( const SbVec2f point) const
protected

From the 2D point in normalized screenspace coordinates, calculate the line passing through the scene.

Typically used for tracking intersection points for the mouse cursor.

References SbMatrix::multLineMatrix(), SbViewVolume::projectPointToLine(), viewVol, and worldToWorking.

Referenced by SbSphereSheetProjector::project(), SbLineProjector::project(), SbPlaneProjector::project(), SbSpherePlaneProjector::project(), SbCylinderPlaneProjector::project(), SbCylinderSheetProjector::project(), SbSphereSectionProjector::project(), and SbCylinderSectionProjector::project().

◆ findVanishingDistance()

float SbProjector::findVanishingDistance ( void  ) const
protected

Finds the unit cube vanishing distance for the current projector view volume. The view volume must be a perspective view volume.

This method was not part of the Inventor v2.1 API, and is an extension specific to Coin.

Since
1.1.0

References SbViewVolume::getHeight(), SbViewVolume::getProjectionDirection(), SbViewVolume::getProjectionType(), SbViewVolume::PERSPECTIVE, SbViewVolume::projectBox(), SbMatrix::setTranslate(), SbBox3f::transform(), and viewVol.

Referenced by SbLineProjector::project(), and SbPlaneProjector::project().

◆ verifyProjection()

SbBool SbProjector::verifyProjection ( const SbVec3f projpt) const
protected

Verifies that projpt is a valid projection for the current view volume. For perspective view volumes, it does this by checking that the projection point is in front of the eye plane. For orthographic projections, this method always returns TRUE.

This method was not part of the Inventor v2.1 API, and is an extension specific to Coin.

Since
1.1.0

References SbViewVolume::getPlane(), SbViewVolume::getProjectionType(), SbPlane::isInHalfSpace(), SbMatrix::multVecMatrix(), SbViewVolume::PERSPECTIVE, viewVol, and workingToWorld.

Referenced by SbLineProjector::project(), and SbPlaneProjector::project().

Member Data Documentation

◆ viewVol

SbProjector::viewVol
protected

◆ worldToWorking

SbProjector::worldToWorking
protected

◆ workingToWorld

SbProjector::workingToWorld
protected

The matrix which converts from coordinates in the projector's local coordinate system to world coordinates.

Referenced by getWorkingSpace(), SbLineProjector::project(), SbPlaneProjector::project(), SbProjector(), setWorkingSpace(), and verifyProjection().


The documentation for this class was generated from the following files:

Copyright © 1998-2007 by Systems in Motion AS. All rights reserved.

Generated on Fri Feb 17 2017 for Coin by Doxygen. 1.8.13