![]() |
ProtoTracer
1.0
Real-time 3D rendering and animation engine
|
Provides deformation effects for groups of triangles. More...
#include <TriangleGroupDeformer.h>
Public Types | |
enum | Axis { XAxis , YAxis , ZAxis } |
Defines the axes available for deformations and clipping. More... | |
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. | |
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.
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.
TriangleGroupDeformer | ( | ITriangleGroup * | object | ) |
Constructor for a single triangle group.
object | A single triangle group object to deform. |
Definition at line 3 of file TriangleGroupDeformer.cpp.
References objectCount, and objects.
TriangleGroupDeformer | ( | ITriangleGroup ** | objects, |
int | objectCount | ||
) |
Constructor for multiple triangle groups.
objects | Array of triangle group objects to deform. |
objectCount | Number of triangle group objects. |
Definition at line 11 of file TriangleGroupDeformer.cpp.
References objectCount, and objects.
Applies axis-aligned clipping to the triangles.
positive | Whether to clip along the positive side of the axis. |
clipAxis | Axis to apply the clipping. |
valueCheckAxis | Axis 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.
Checks if a given base position is clipped along a specific axis.
base | The base position to check. |
positive | Whether to check the positive side of the axis. |
valueCheckAxis | The axis to check against. |
Definition at line 16 of file TriangleGroupDeformer.cpp.
References Vector3D::X, XAxis, Vector3D::Y, YAxis, Vector3D::Z, and ZAxis.
Referenced by AxisZeroClipping().
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.
pointMultiplier | Array of multipliers for points during deformation. |
points | Number of points to deform. |
scale | Scale of the deformation. |
minAxis | Minimum axis value for deformation. |
maxAxis | Maximum axis value for deformation. |
selectionAxis | Axis used for selecting points. |
deformAxis | Axis 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.
void DropwaveDeform | ( | float | magnitude, |
float | timeRatio, | ||
float | periodModifier, | ||
float | frequencyModifier, | ||
Axis | axis | ||
) |
Applies a dropwave deformation along a specified axis.
magnitude | Magnitude of the deformation. |
timeRatio | Time progression ratio for the deformation. |
periodModifier | Modifier for the deformation period. |
frequencyModifier | Modifier for the deformation frequency. |
axis | The 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.
void SineWaveSurfaceDeform | ( | Vector3D | offset, |
float | magnitude, | ||
float | timeRatio, | ||
float | periodModifier, | ||
float | frequencyModifier, | ||
Axis | axis | ||
) |
Applies a sine wave surface deformation along a specified axis.
offset | Offset for the sine wave deformation. |
magnitude | Magnitude of the deformation. |
timeRatio | Time progression ratio for the deformation. |
periodModifier | Modifier for the deformation period. |
frequencyModifier | Modifier for the deformation frequency. |
axis | The 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.
void SinusoidalDeform | ( | float | magnitude, |
float | timeRatio, | ||
float | periodModifier, | ||
float | frequencyModifier, | ||
Axis | axis | ||
) |
Applies a sinusoidal deformation along a specified axis.
magnitude | Magnitude of the deformation. |
timeRatio | Time progression ratio for the deformation. |
periodModifier | Modifier for the deformation period. |
frequencyModifier | Modifier for the deformation frequency. |
axis | The 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.
|
private |
Number of triangle group objects.
Definition at line 39 of file TriangleGroupDeformer.h.
Referenced by AxisZeroClipping(), CosineInterpolationDeformer(), DropwaveDeform(), SineWaveSurfaceDeform(), SinusoidalDeform(), TriangleGroupDeformer(), and TriangleGroupDeformer().
|
private |
Array of triangle group objects to deform.
Definition at line 38 of file TriangleGroupDeformer.h.
Referenced by AxisZeroClipping(), CosineInterpolationDeformer(), DropwaveDeform(), SineWaveSurfaceDeform(), SinusoidalDeform(), TriangleGroupDeformer(), and TriangleGroupDeformer().