4
\$\begingroup\$

I am trying to move my object up and down using cos and sin, but I have problem understanding how does the sin and cos work, so I can make my object move up and down like a wave frequently

Init Time starts from value of 16.00 it keeps on increment up to 17.065

initTime += msec * 0.001;
float x  =  cos(initTime* 2.46) * 2075;
float y  =  sin (initTime* 2.888) * 200;

My object goes down and up, then goes back to its initial position, then goes up and down once again, I want it to be like a wave

\$\endgroup\$
0

1 Answer 1

10
\$\begingroup\$

I still think you need to understand basic trigonometry. But here is a simple introduction of how to use sin and cos to simulate a wave.

The basic wave formula is:

f(t) = A * sin( 2 * pi * f * t + phase )

Where:

  • f is the frequency, which controls the number of times the waves repeats per unit time, f = 1/P where P is the number of periods.
  • A is the amplitude of the wave, which represents the highest and lowest points of the wave.
  • 2*pi is a scaling factor to be able to deal with the equation in terms of frequency and periods. (in other words, make it easier and more intuitive).
  • t is a parameter that represents time, or any other varying quantity.

enter image description here

The relation between a cos and a sin wave is only pi/2 phase shift.

cos(t) = sin(t + pi/2 );

What you only need to do to make your object move, is to vary t over time, inject it into the wave equation, and multiply your object possibly the Y position with the computed result from the wave equation.

Implementing this is straightforward

float initx = 0;
float inity = 0;
Object.x = initx+ time;
Object.y = inity+ (a * sin(2 * PI * f * t + phase));

But keep in mind that this will not simulate how an object would float on water. The topic would be much more complicated. This will only simulate a sine wave.

\$\endgroup\$
0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .