Based on the screenshot, the plugin just samples different time positions then calculates their positions from there, using straight lines to connect them up (as indicated by the sudden changes in angle shown below
So basically just have a loop like this:
for t = 0, MAXTIME, TIMESTEP do
-- calculate position at time t
end
To calculate the position at time t, you should make use of the formula

s = ut + 1/2 at^2
where s is the displacement, u is the initial velocity, t is the time, and a is the acceleration.
Adding this into the loop, using variables from the particle emitter, you get the following:
local Part = game.Workspace.Part -- This is the part where the particles originate at
local Emitter = Part.ParticleEmitter
local Step = 0.1
local u = Emitter.Speed.Max * Vector3.up -- only works for flat spawners, that are set to the top emission direction
local a = Emitter.Acceleration
for t = 0, Emitter.Lifetime.Max, Step do
local Position = Part.Position + u*t + (1/2)*a*t^2
-- Do what you want with the position at this timestamp
end
If you want it to have less variables:
local Part = game.Workspace.Part -- This is the part where the particles originate at
local Emitter = Part.ParticleEmitter
for t = 0, Emitter.Lifetime.Max, 0.1 do
local Position = Part.Position + Emitter.Velocity*t + (1/2)*Emitter.Acceleration*t^2
-- Do what you want with the position at this timestamp
end
The final position then would be
local Position = Part.Position + Emitter.Velocity*Emitter.Lifetime.Max + (1/2)*Emitter.Acceleration*Emitter.Lifetime.Max^2
To account for drag, it becomes a lot more complicated. I’m still trying to derive the correct formula for it, so I will edit this post later on if I come up with a working solution.