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

Implements a fisheye distortion effect for pixel groups. More...

#include <Fisheye.h>

Inheritance diagram for Fisheye:
Collaboration diagram for Fisheye:

Public Member Functions

 Fisheye (float amplitude=0.5f)
 Constructs a Fisheye effect with a specified amplitude.
 
void SetPosition (Vector2D offset)
 Sets the distortion center offset.
 
void SetAmplitude (float amplitude)
 Sets the amplitude of the distortion.
 
void ApplyEffect (IPixelGroup *pixelGroup) override
 Applies the fisheye effect to the given pixel group.
 
- Public Member Functions inherited from Effect
 Effect ()
 Default constructor for the Effect class.
 
void SetRatio (float ratio)
 Sets the scaling ratio for the effect.
 

Private Attributes

Vector2D offset = Vector2D(0.0f, 0.0f)
 Offset for the fisheye distortion center.
 
float amplitude
 Amplitude of the distortion effect.
 
FunctionGenerator fGenSize = FunctionGenerator(FunctionGenerator::Sine, 1.0f, 48.0f, 2.3f)
 Controls the size modulation.
 
FunctionGenerator fGenX = FunctionGenerator(FunctionGenerator::Sine, -96.0f, 96.0f, 2.7f)
 Controls X-axis displacement.
 
FunctionGenerator fGenY = FunctionGenerator(FunctionGenerator::Sine, -96.0f, 96.0f, 1.7f)
 Controls Y-axis displacement.
 
FunctionGenerator fGenWarp = FunctionGenerator(FunctionGenerator::Sine, 1.0f, 100.0f, 3.7f)
 Controls warp effect.
 

Additional Inherited Members

- Protected Attributes inherited from Effect
float ratio = 0.0f
 A scaling ratio used for dynamic effect adjustments.
 

Detailed Description

Implements a fisheye distortion effect for pixel groups.

The Fisheye effect dynamically distorts pixel positions around a specified offset using sinusoidal function generators for smooth, animated transformations.

Definition at line 26 of file Fisheye.h.

Constructor & Destructor Documentation

◆ Fisheye()

Fisheye ( float  amplitude = 0.5f)

Constructs a Fisheye effect with a specified amplitude.

Parameters
amplitudeThe amplitude of the fisheye distortion. Default is 0.5.

Definition at line 3 of file Fisheye.cpp.

Member Function Documentation

◆ ApplyEffect()

void ApplyEffect ( IPixelGroup pixelGroup)
overridevirtual

Applies the fisheye effect to the given pixel group.

This method modifies the positions of the pixels in the group based on the fisheye distortion formula, using the amplitude, offset, and function generators.

Parameters
pixelGroupPointer to the IPixelGroup to which the effect will be applied.

Implements Effect.

Definition at line 13 of file Fisheye.cpp.

References amplitude, RGBColor::B, Vector2D::CalculateEuclideanDistance(), fGenWarp, fGenX, fGenY, RGBColor::G, IPixelGroup::GetCenterCoordinate(), IPixelGroup::GetColorBuffer(), IPixelGroup::GetColors(), IPixelGroup::GetCoordinate(), IPixelGroup::GetOffsetXYIndex(), IPixelGroup::GetPixelCount(), offset, RGBColor::R, Effect::ratio, FunctionGenerator::Update(), Vector2D::X, and Vector2D::Y.

◆ SetAmplitude()

void SetAmplitude ( float  amplitude)

Sets the amplitude of the distortion.

Parameters
amplitudeThe new amplitude for the fisheye effect.

Definition at line 9 of file Fisheye.cpp.

References amplitude.

◆ SetPosition()

void SetPosition ( Vector2D  offset)

Sets the distortion center offset.

Parameters
offsetThe new offset for the fisheye effect center.

Definition at line 5 of file Fisheye.cpp.

References offset.

Member Data Documentation

◆ amplitude

float amplitude
private

Amplitude of the distortion effect.

Definition at line 29 of file Fisheye.h.

Referenced by ApplyEffect(), and SetAmplitude().

◆ fGenSize

FunctionGenerator fGenSize = FunctionGenerator(FunctionGenerator::Sine, 1.0f, 48.0f, 2.3f)
private

Controls the size modulation.

Definition at line 30 of file Fisheye.h.

◆ fGenWarp

FunctionGenerator fGenWarp = FunctionGenerator(FunctionGenerator::Sine, 1.0f, 100.0f, 3.7f)
private

Controls warp effect.

Definition at line 33 of file Fisheye.h.

Referenced by ApplyEffect().

◆ fGenX

FunctionGenerator fGenX = FunctionGenerator(FunctionGenerator::Sine, -96.0f, 96.0f, 2.7f)
private

Controls X-axis displacement.

Definition at line 31 of file Fisheye.h.

Referenced by ApplyEffect().

◆ fGenY

FunctionGenerator fGenY = FunctionGenerator(FunctionGenerator::Sine, -96.0f, 96.0f, 1.7f)
private

Controls Y-axis displacement.

Definition at line 32 of file Fisheye.h.

Referenced by ApplyEffect().

◆ offset

Vector2D offset = Vector2D(0.0f, 0.0f)
private

Offset for the fisheye distortion center.

Definition at line 28 of file Fisheye.h.

Referenced by ApplyEffect(), and SetPosition().


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