44 std::vector<QPointF> &target_points,
45 std::vector<QPointF> &velocity,
48 int width,
int height);
61 static void UpdatePhysicsOptimized(std::vector<QPointF> &control_points,
const std::vector<QPointF> &target_points,
62 std::vector<QPointF> &velocity,
const QPointF &blob_center,
79 std::vector<QPointF> &velocity,
const QPointF &blob_center,
94 static void UpdatePhysics(std::vector<QPointF> &control_points,
95 const std::vector<QPointF> &target_points,
96 std::vector<QPointF> &velocity,
97 const QPointF &blob_center,
113 std::vector<QPointF> &velocity,
114 QPointF &blob_center,
115 int width,
int height,
128 std::vector<QPointF> &velocity,
130 double max_distance);
147 static void StabilizeBlob(std::vector<QPointF> &control_points,
148 const QPointF &blob_center,
150 double stabilization_rate);
162 std::vector<QPointF> &velocity,
163 const QPointF &blob_center,
BlobPhysics()
Constructs a BlobPhysics object. Initializes the internal thread pool and starts the physics timer.
Definition blob_physics.cpp:12
void SetLastWindowPos(const QPointF &position)
Sets the last known position of the window. Used by CalculateWindowVelocity.
Definition blob_physics.cpp:660
void UpdatePhysicsParallel(std::vector< QPointF > &control_points, std::vector< QPointF > &target_points, std::vector< QPointF > &velocity, const QPointF &blob_center, const BlobConfig::BlobParameters ¶ms, const BlobConfig::PhysicsParameters &physics_params)
Updates the blob physics using QtConcurrent for parallel processing across multiple threads....
Definition blob_physics.cpp:157
QVector2D last_window_velocity_
Stores the last calculated window velocity.
Definition blob_physics.h:198
static void InitializeBlob(std::vector< QPointF > &control_points, std::vector< QPointF > &target_points, std::vector< QPointF > &velocity, QPointF &blob_center, const BlobConfig::BlobParameters ¶ms, int width, int height)
Initializes the blob's state vectors (control points, target points, velocity) and center position....
Definition blob_physics.cpp:17
QThreadPool thread_pool_
Thread pool used for parallel physics updates (UpdatePhysicsParallel).
Definition blob_physics.h:200
static bool ValidateAndRepairControlPoints(std::vector< QPointF > &control_points, std::vector< QPointF > &velocity, const QPointF &blob_center, double blob_radius)
Checks if any control points or velocities contain invalid values (NaN, infinity)....
Definition blob_physics.cpp:598
QVector2D CalculateWindowVelocity(const QPointF ¤t_position)
Calculates the approximate velocity of the window based on position changes over time....
Definition blob_physics.cpp:631
static void UpdatePhysicsOptimized(std::vector< QPointF > &control_points, const std::vector< QPointF > &target_points, std::vector< QPointF > &velocity, const QPointF &blob_center, const BlobConfig::BlobParameters ¶ms, const BlobConfig::PhysicsParameters &physics_params)
Updates the blob physics using an optimized Structure-of-Arrays (SoA) approach with OpenMP paralleliz...
Definition blob_physics.cpp:34
static void UpdatePhysics(std::vector< QPointF > &control_points, const std::vector< QPointF > &target_points, std::vector< QPointF > &velocity, const QPointF &blob_center, const BlobConfig::BlobParameters ¶ms, const BlobConfig::PhysicsParameters &physics_params)
Updates the blob physics using a standard sequential approach. Iterates through each control point,...
Definition blob_physics.cpp:385
QPointF last_window_position_
Stores the last known window position for velocity calculation.
Definition blob_physics.h:196
QPointF GetLastWindowPos() const
Gets the last recorded window position.
Definition blob_physics.cpp:664
QElapsedTimer physics_timer_
Timer used for calculating delta time in velocity calculations.
Definition blob_physics.h:194
QVector2D GetLastWindowVelocity() const
Gets the last calculated window velocity.
Definition blob_physics.cpp:668
static void SmoothBlobShape(std::vector< QPointF > &control_points)
Applies a smoothing filter to the blob's shape. Moves each control point slightly towards the average...
Definition blob_physics.cpp:533
static void ConstrainNeighborDistances(std::vector< QPointF > &control_points, std::vector< QPointF > &velocity, double min_distance, double max_distance)
Enforces minimum and maximum distance constraints between neighboring control points....
Definition blob_physics.cpp:500
static void HandleBorderCollisions(std::vector< QPointF > &control_points, std::vector< QPointF > &velocity, QPointF &blob_center, int width, int height, double restitution, int padding)
Handles collisions between blob control points and the widget borders. Adjusts positions and reverses...
Definition blob_physics.cpp:463
static void StabilizeBlob(std::vector< QPointF > &control_points, const QPointF &blob_center, double blob_radius, double stabilization_rate)
Gradually moves control points towards an ideal circular/organic shape when the blob is idle....
Definition blob_physics.cpp:551
Namespace containing configuration structures and enums for the Blob animation.
Definition blob_config.h:12
Structure holding parameters related to the blob's visual appearance and basic geometry.
Definition blob_config.h:25
Structure holding parameters controlling the physics simulation of the blob.
Definition blob_config.h:51