I'm making a simple Particle system with the use of QT for a GUI.
I'm making 3 types of particle patterns:
Linear (particles move in a straight line)
Oscillating (particles move like a sine wave)
Circular (particles move in a circle)
When creating each particle pattern when QT is run from the C++ solution, one can also edit the position (x+y), spawn rate, life span (s), max particles and color of the particles created.
There are additional options for each individual pattern:
Linear (can adjust velocity)
Oscillating( can adjust particle speed (pixels/s) , Period and Amplitude)
Circular/Ellipsoid (can adjust particle speed and dimensions (h, w).
All of these patterns work when created, but the oscillating and circular patterns are slower than i want them to be, and this is due to the update function.
Currently the update function is the same (or uses the same logic) for every pattern, and it's this:
every cpp file has it's respective header file, except for of course main.cpp
void LinearParticle::update(float dt)
pos.setX(pos.x() + vel.x() * dt);
pos.setY(pos.y() + vel.y() * dt);
void CircularParticle::update(float dt)
pos.setX(pos.x() + sin(age));
pos.setY(pos.y() + cos(age));
void OscillatingParticle::update(float dt)
Particle::update ( dt);
pos.setX(pos.x() + speed * dt);
pos.setY(pos.y() + sin(age));
Note how the function differs depending on each pattern, but the logic is the same.
This function updates the particle from it's last generated position (imagine a line of dots, as this is what linear looks like).
To make the oscillating and circular patterns act faster, i need to change this update function so that it updates the particle from the point of origin, rather than it's last generated position.
If anyone may have the solution to this issue or needs any more information, don't hesistate to ask, as ideally i would like to have solved this within a week.
Seeing as posting the entire source code in this thread is kind of overkill, i will list all my current header and cpp files, i can also send you all the code if you wish:
I also have made a YUML diagram for the whole project too, so if you wish to see that to set some things straight , let me know,either PM'ing or responding to this thread will give me a notification!