ProtoTracer  1.0
Real-time 3D rendering and animation engine
Loading...
Searching...
No Matches
ObjectDeformer Class Reference

Applies geometric transformations to one or more 3D objects. More...

#include <ObjectDeformer.h>

Collaboration diagram for ObjectDeformer:

Public Types

enum  Axis { XAxis , YAxis , ZAxis }
 Represents the axis of deformation or clipping. More...
 

Public Member Functions

 ObjectDeformer (Object3D *object)
 Constructs an ObjectDeformer for a single object.
 
 ObjectDeformer (Object3D **objects, int objectCount)
 Constructs an ObjectDeformer for multiple objects.
 
void PerspectiveDeform (float scaleRatio, Vector3D center, Axis axis)
 Applies a perspective deformation to the object(s).
 
void SinusoidalDeform (float magnitude, float timeRatio, float periodModifier, float frequencyModifier, Axis axis)
 Applies a sinusoidal deformation to the object(s).
 
void DropwaveDeform (float magnitude, float timeRatio, float periodModifier, float frequencyModifier, Axis axis)
 Applies a dropwave deformation to the object(s).
 
void SineWaveSurfaceDeform (Vector3D offset, float magnitude, float timeRatio, float periodModifier, float frequencyModifier, Axis axis)
 Applies a sine wave surface deformation to the object(s).
 
void CosineInterpolationDeformer (float *pointMultiplier, int points, float scale, float minAxis, float maxAxis, Axis selectionAxis, Axis deformAxis)
 Applies cosine interpolation deformation to the object(s).
 
void AxisZeroClipping (bool positive, Axis clipAxis, Axis valueCheckAxis)
 Clips the object(s) along a specified axis.
 

Private Member Functions

bool CheckClipAxis (Vector3D base, bool positive, Axis valueCheckAxis)
 Checks if a given axis value exceeds a clipping threshold.
 

Private Attributes

Object3D ** objects
 Array of pointers to Object3D instances to be deformed.
 
int objectCount = 0
 Number of objects in the objects array.
 

Detailed Description

Applies geometric transformations to one or more 3D objects.

The ObjectDeformer class allows for various deformations, including perspective, sinusoidal waves, and surface-based transformations. It supports operations on both individual objects and collections of objects.

Definition at line 25 of file ObjectDeformer.h.

Member Enumeration Documentation

◆ Axis

Represents the axis of deformation or clipping.

Enumerator
XAxis 

X-axis.

YAxis 

Y-axis.

ZAxis 

Z-axis.

Definition at line 31 of file ObjectDeformer.h.

Constructor & Destructor Documentation

◆ ObjectDeformer() [1/2]

ObjectDeformer ( Object3D object)

Constructs an ObjectDeformer for a single object.

Parameters
objectPointer to the Object3D to be deformed.

Definition at line 27 of file ObjectDeformer.cpp.

References objectCount, and objects.

◆ ObjectDeformer() [2/2]

ObjectDeformer ( Object3D **  objects,
int  objectCount 
)

Constructs an ObjectDeformer for multiple objects.

Parameters
objectsPointer to an array of Object3D pointers.
objectCountNumber of objects in the array.

Definition at line 35 of file ObjectDeformer.cpp.

References objectCount, and objects.

Member Function Documentation

◆ AxisZeroClipping()

void AxisZeroClipping ( bool  positive,
Axis  clipAxis,
Axis  valueCheckAxis 
)

Clips the object(s) along a specified axis.

Parameters
positiveDetermines whether to clip positive or negative values.
clipAxisAxis along which clipping is performed.
valueCheckAxisAxis used for value checks during clipping.

Definition at line 189 of file ObjectDeformer.cpp.

References CheckClipAxis(), Object3D::GetTriangleGroup(), ITriangleGroup::GetVertices(), objectCount, objects, Vector3D::X, XAxis, Vector3D::Y, YAxis, Vector3D::Z, and ZAxis.

◆ CheckClipAxis()

bool CheckClipAxis ( Vector3D  base,
bool  positive,
Axis  valueCheckAxis 
)
private

Checks if a given axis value exceeds a clipping threshold.

Parameters
baseThe base vector to check.
positiveDetermines whether the check is for positive or negative values.
valueCheckAxisThe axis to check for clipping.
Returns
True if the value exceeds the threshold, false otherwise.

Definition at line 3 of file ObjectDeformer.cpp.

References Vector3D::X, XAxis, Vector3D::Y, YAxis, Vector3D::Z, and ZAxis.

Referenced by AxisZeroClipping().

◆ CosineInterpolationDeformer()

void CosineInterpolationDeformer ( float pointMultiplier,
int  points,
float  scale,
float  minAxis,
float  maxAxis,
Axis  selectionAxis,
Axis  deformAxis 
)

Applies cosine interpolation deformation to the object(s).

Parameters
pointMultiplierArray of multipliers for point deformation.
pointsNumber of points to deform.
scaleScaling factor for the deformation.
minAxisMinimum axis value for the deformation range.
maxAxisMaximum axis value for the deformation range.
selectionAxisAxis used for selecting points to deform.
deformAxisAxis along which the deformation is applied.

Definition at line 129 of file ObjectDeformer.cpp.

References Mathematics::CosineInterpolation(), Object3D::GetTriangleGroup(), ITriangleGroup::GetVertices(), objectCount, objects, Mathematics::RoundUpWindow(), Vector3D::X, XAxis, Vector3D::Y, YAxis, Vector3D::Z, and ZAxis.

◆ DropwaveDeform()

void DropwaveDeform ( float  magnitude,
float  timeRatio,
float  periodModifier,
float  frequencyModifier,
Axis  axis 
)

Applies a dropwave deformation to the object(s).

Parameters
magnitudeMagnitude of the dropwave effect.
timeRatioRatio for time-based animation.
periodModifierModifier for the wave's period.
frequencyModifierModifier for the wave's frequency.
axisAxis along which the deformation is applied.

Definition at line 85 of file ObjectDeformer.cpp.

References Object3D::GetTriangleGroup(), ITriangleGroup::GetVertices(), objectCount, objects, Vector3D::X, XAxis, Vector3D::Y, YAxis, Vector3D::Z, and ZAxis.

◆ PerspectiveDeform()

void PerspectiveDeform ( float  scaleRatio,
Vector3D  center,
Axis  axis 
)

Applies a perspective deformation to the object(s).

Parameters
scaleRatioScaling factor for the deformation.
centerCenter point for the perspective effect.
axisAxis along which the deformation is applied.

Definition at line 40 of file ObjectDeformer.cpp.

References Object3D::GetTriangleGroup(), ITriangleGroup::GetVertices(), objectCount, objects, Vector3D::X, XAxis, Vector3D::Y, YAxis, Vector3D::Z, and ZAxis.

◆ SineWaveSurfaceDeform()

void SineWaveSurfaceDeform ( Vector3D  offset,
float  magnitude,
float  timeRatio,
float  periodModifier,
float  frequencyModifier,
Axis  axis 
)

Applies a sine wave surface deformation to the object(s).

Parameters
offsetOffset for the deformation center.
magnitudeMagnitude of the wave.
timeRatioRatio for time-based animation.
periodModifierModifier for the wave's period.
frequencyModifierModifier for the wave's frequency.
axisAxis along which the deformation is applied.

Definition at line 107 of file ObjectDeformer.cpp.

References Object3D::GetTriangleGroup(), ITriangleGroup::GetVertices(), objectCount, objects, Vector3D::X, XAxis, Vector3D::Y, YAxis, Vector3D::Z, and ZAxis.

Referenced by Boot::Update().

◆ SinusoidalDeform()

void SinusoidalDeform ( float  magnitude,
float  timeRatio,
float  periodModifier,
float  frequencyModifier,
Axis  axis 
)

Applies a sinusoidal deformation to the object(s).

Parameters
magnitudeMagnitude of the sinusoidal wave.
timeRatioRatio for time-based animation.
periodModifierModifier for the wave's period.
frequencyModifierModifier for the wave's frequency.
axisAxis along which the deformation is applied.

Definition at line 63 of file ObjectDeformer.cpp.

References Object3D::GetTriangleGroup(), ITriangleGroup::GetVertices(), objectCount, objects, Vector3D::X, XAxis, Vector3D::Y, YAxis, Vector3D::Z, and ZAxis.

Member Data Documentation

◆ objectCount

int objectCount = 0
private

◆ objects

Object3D** objects
private

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