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

Provides deformation effects for groups of triangles. More...

#include <TriangleGroupDeformer.h>

Collaboration diagram for TriangleGroupDeformer:

Public Types

enum  Axis { XAxis , YAxis , ZAxis }
 Defines the axes available for deformations and clipping. More...
 

Public Member Functions

 TriangleGroupDeformer (ITriangleGroup *object)
 Constructor for a single triangle group.
 
 TriangleGroupDeformer (ITriangleGroup **objects, int objectCount)
 Constructor for multiple triangle groups.
 
void SinusoidalDeform (float magnitude, float timeRatio, float periodModifier, float frequencyModifier, Axis axis)
 Applies a sinusoidal deformation along a specified axis.
 
void DropwaveDeform (float magnitude, float timeRatio, float periodModifier, float frequencyModifier, Axis axis)
 Applies a dropwave deformation along a specified axis.
 
void SineWaveSurfaceDeform (Vector3D offset, float magnitude, float timeRatio, float periodModifier, float frequencyModifier, Axis axis)
 Applies a sine wave surface deformation along a specified axis.
 
void CosineInterpolationDeformer (float *pointMultiplier, int points, float scale, float minAxis, float maxAxis, Axis selectionAxis, Axis deformAxis)
 Applies a cosine interpolation deformation along a specified axis.
 
void AxisZeroClipping (bool positive, Axis clipAxis, Axis valueCheckAxis)
 Applies axis-aligned clipping to the triangles.
 

Private Member Functions

bool CheckClipAxis (Vector3D base, bool positive, Axis valueCheckAxis)
 Checks if a given base position is clipped along a specific axis.
 

Private Attributes

ITriangleGroup ** objects
 Array of triangle group objects to deform.
 
int objectCount = 0
 Number of triangle group objects.
 

Detailed Description

Provides deformation effects for groups of triangles.

This class supports applying various deformations to groups of triangles such as sinusoidal, dropwave, and cosine interpolation. It also supports axis-aligned clipping and custom deformations along selected axes.

Definition at line 25 of file TriangleGroupDeformer.h.

Member Enumeration Documentation

◆ Axis

Defines the axes available for deformations and clipping.

Enumerator
XAxis 

X-axis.

YAxis 

Y-axis.

ZAxis 

Z-axis.

Definition at line 31 of file TriangleGroupDeformer.h.

Constructor & Destructor Documentation

◆ TriangleGroupDeformer() [1/2]

Constructor for a single triangle group.

Parameters
objectA single triangle group object to deform.

Definition at line 3 of file TriangleGroupDeformer.cpp.

References objectCount, and objects.

◆ TriangleGroupDeformer() [2/2]

TriangleGroupDeformer ( ITriangleGroup **  objects,
int  objectCount 
)

Constructor for multiple triangle groups.

Parameters
objectsArray of triangle group objects to deform.
objectCountNumber of triangle group objects.

Definition at line 11 of file TriangleGroupDeformer.cpp.

References objectCount, and objects.

Member Function Documentation

◆ AxisZeroClipping()

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

Applies axis-aligned clipping to the triangles.

Parameters
positiveWhether to clip along the positive side of the axis.
clipAxisAxis to apply the clipping.
valueCheckAxisAxis used to determine clipping.

Definition at line 156 of file TriangleGroupDeformer.cpp.

References CheckClipAxis(), ITriangleGroup::GetVertexCount(), 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 base position is clipped along a specific axis.

Parameters
baseThe base position to check.
positiveWhether to check the positive side of the axis.
valueCheckAxisThe axis to check against.
Returns
True if the base position is clipped, otherwise false.

Definition at line 16 of file TriangleGroupDeformer.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 a cosine interpolation deformation along a specified axis.

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

Definition at line 100 of file TriangleGroupDeformer.cpp.

References Mathematics::CosineInterpolation(), ITriangleGroup::GetVertexCount(), 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 along a specified axis.

Parameters
magnitudeMagnitude of the deformation.
timeRatioTime progression ratio for the deformation.
periodModifierModifier for the deformation period.
frequencyModifierModifier for the deformation frequency.
axisThe axis along which to apply the deformation.

Definition at line 56 of file TriangleGroupDeformer.cpp.

References ITriangleGroup::GetVertexCount(), 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 along a specified axis.

Parameters
offsetOffset for the sine wave deformation.
magnitudeMagnitude of the deformation.
timeRatioTime progression ratio for the deformation.
periodModifierModifier for the deformation period.
frequencyModifierModifier for the deformation frequency.
axisThe axis along which to apply the deformation.

Definition at line 78 of file TriangleGroupDeformer.cpp.

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

◆ SinusoidalDeform()

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

Applies a sinusoidal deformation along a specified axis.

Parameters
magnitudeMagnitude of the deformation.
timeRatioTime progression ratio for the deformation.
periodModifierModifier for the deformation period.
frequencyModifierModifier for the deformation frequency.
axisThe axis along which to apply the deformation.

Definition at line 34 of file TriangleGroupDeformer.cpp.

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

Member Data Documentation

◆ objectCount

int objectCount = 0
private

◆ objects


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