• Create Account

# Sine Waves Travel At Any Angle Through 2D Space

Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

2 replies to this topic

### #1gareth_mcdaid  Members   -  Reputation: 157

Like
0Likes
Like

Posted 23 June 2013 - 02:10 PM

The sine wave generator is using a time, elapsed_time in milliseconds, or a time stamp milliseconds, to get the position of the sine wave.

The problem is I need to make the sine waves travel at any angle through 2D space, any help?

The sine wave generator is part of a separate projectile system, 10 is the maximum frequency, elapsed_time is required because this is to be used in a client and server game, where timing is crucial.

Create event

set=0;
frequency=1
amplitude=50*1.0
pixels[0,0]=0
pixel_num=0
xx=0

Draw event

if set=0
{
start_time=current_time
set=1
}

elapsed_time =current_time-start_time

{
}

xx=0

draw_set_color(c_red)
for(i=0;i<pixel_num;i+=1)
{

if i>0
{
}

}

{
pixel_num+=1
}


The projectiles move independent of the frame rate, using the elapsed time, the elapsed time is used to position the projectiles, it’s required to keep the server and client synchronized at all times.

Distance is calculated by using constants and the elapsed time, the constants are based of the server tick rate and the target fps, and there is a speed constant for each projectile used to calculate the number of pixels to move the projectile per millisecond of time passed

The below code as the desired effect but for only for four directions, I need 360 degrees of movement for this to be of use in my projectile

system..

angle=0

anlge=90

angle=180

angle=270


Edited by gareth_mcdaid, 23 June 2013 - 02:27 PM.

### #2HappyCoder  Members   -  Reputation: 3339

Like
4Likes
Like

Posted 23 June 2013 - 06:54 PM

You can rotate points in 2D using the following matrix.

| cos(a)  sin(a)|
|-sin(a)  cos(a)|


By multiplying the matrix with a point you get the rotated point.

| cos(a)  sin(a)| * |x| = |x *  cos(a) + y * sin(a)|
|-sin(a)  cos(a)|   |y|   |x * -sin(a) + y * cos(a)|

'a' is the angle you wish to rotate by.

x = time * speed
y = amplitude * sin(10 * frequency * time / lifetime)

Plug x and y into the equation above and you should get an equation for calculating the point along the wave. Then take the result of that and add it to (startx, starty). Another method would to to calculate x,y unrotated then rotate the point using the matrix above. After you rotate you add the (startx, starty). I would recommend the second method. Using matrices like that gives you a lot of flexibility over the transformation of points.

### #3jjd  Crossbones+   -  Reputation: 2130

Like
0Likes
Like

Posted 07 July 2013 - 06:13 PM

The sine wave generator is using a time, elapsed_time in milliseconds, or a time stamp milliseconds, to get the position of the sine wave.

The problem is I need to make the sine waves travel at any angle through 2D space, any help?

The sine wave generator is part of a separate projectile system, 10 is the maximum frequency, elapsed_time is required because this is to be used in a client and server game, where timing is crucial.

Create event

set=0;
frequency=1
amplitude=50*1.0
pixels[0,0]=0
pixel_num=0
xx=0

Draw event

if set=0
{
start_time=current_time
set=1
}

elapsed_time =current_time-start_time

{
}

xx=0

draw_set_color(c_red)
for(i=0;i<pixel_num;i+=1)
{

if i>0
{
}

}

{
pixel_num+=1
}


The projectiles move independent of the frame rate, using the elapsed time, the elapsed time is used to position the projectiles, it’s required to keep the server and client synchronized at all times.

Distance is calculated by using constants and the elapsed time, the constants are based of the server tick rate and the target fps, and there is a speed constant for each projectile used to calculate the number of pixels to move the projectile per millisecond of time passed

The below code as the desired effect but for only for four directions, I need 360 degrees of movement for this to be of use in my projectile

system..

angle=0

anlge=90

angle=180

angle=270


I think what you are looking for is called a wave vector

-Josh

--www.physicaluncertainty.com