# Sine wave - long algorithm :s

1. Mar 9, 2005

### webamoeba

Hi,

This maths stuff is tstarting to hurt my head!!! :p Ok, I want to use a sine wave to make objects appear at an increasing rate and then a decreasing rate. e.g. where:

Code (Text):
y=sin(x)
y = interval before next object appears

so in Maple that'd be:

Code (Text):
plot(sin(x)+1,x=Pi/2..Pi+(Pi/2));
Now I want the total of all the equations to = 240:

Code (Text):
solve(((sin(Pi/2)+1)+(sin(Pi/2)+1))*x=240, x);
x comes to 60 in this case. Now I want to alter the equation so as it takes another variable, y, where y = the number of objects (integer >= 0), this does not include the first and last objects.

so if y = 1 I would need to add
Code (Text):
... (sin((((Pi/2)-(Pi+Pi/2))/y+1)*y) +1) ...
if y = 2 I would need to add
Code (Text):
... (sin((((Pi/2)-(Pi+Pi/2))/(y-1)+1)*(y-1)) +1) + (sin((((Pi/2)-(Pi+Pi/2))/y+1)*y) +1) ...
Is there an easier way to determine x given y? without having to use all of those nasty looking equations!!!!

thanks

hmmm, not sure that was a very good explanation, take a look at http://www.webamoeba.co.uk/glam/CS1S01/cw2/maths.gif

it mite make more sense ;)

Last edited by a moderator: Apr 21, 2017
2. Mar 9, 2005

### Galileo

I honestly have no idea what you're trying to do.
Anyway, hopefully the relations:

$$\sin(k\pi)=0$$
and
$$\sin(\frac{\pi}{2}+k\pi)=(-1)^k$$

where k is any integer, will help.

3. Mar 9, 2005

### ahrkron

Staff Emeritus
What are you trying to do? Is it a simulation? you mention that you want some things to "appear at an increasing rate". Is the sine wave to determine the rate of appearance? are you using random numbers to actually determine the time for each appearance? if so, then it seems you can't use "solve"...

4. Mar 9, 2005

### webamoeba

I thought I'd managed to write it badly ;) lol.

Ok, I have a flash movie with sheep that jump over a bed. I want to be able to specify the total number of sheep that will appear (lets call it s), and I want the rate at which they appear to increase smoothly, then disipate again. This must all happen within 240 frames (10 seconds), although I may want to adjust this as well later... :surprised

So I need to be able to determine the value of x on the diagram, now I think i should be using (Pi/s)*i where i is the current sheep number (starting from 0). to get the x value on a graph. So to get the y value on the graph I go sin((Pi/s)*i) from i=0 to i=i and add them together, however they wont equal 240, so I need to work out what value to times them by to get 240 as the total everytime...

does that make more sense???

thanks again.

5. Mar 9, 2005

### gerben

You just add all the intervals (sin((Pi/s)*i) from i=0 to i=s) let's call the sum off all of them n, now n wil not be 240.

If you divide each interval by n the sum of all of them will be 1, but you want the sum of all intervals to be 240 so you must divide each interval by n and multiply the result by 240.

so the interval you use is:

new_interval = interval * 240/n

6. Mar 9, 2005

### Galileo

Let me get this straight.
So you want the rate to increase in the beginning and decrease near the end. Then the rate be can modelled by a sine from t=0 to t=pi (you can change this later).
At t=0, the number of sheep is 0 and at t=pi (to become 10 seconds later) it will be s=N, the total number of sheep. (We'll take the rate to be continuous for now).

Then the number of sheep at time t is:

$$s(t)=\frac{N}{2}\int_0^t\sin(t')dt'=\frac{N}{2}(1-\cos(t))$$

This function satisfies s(0)=0 and s(t)=N.

If you want to go from t=0 to t=T, then it simply becomes:

$$s(t)=\frac{N}{2}(1-\cos(\frac{t\pi}{T}))$$

The moments at which a sheep should arrive are thus values of t for which s(t)=1, s(t)=2, s(t)=3 etc.

7. Mar 9, 2005

### webamoeba

ooooooooooo

i love u!

well maybe not love ;) but you know what I mean :D. And the strangest thing is, I actually seem to understand it! my god thats a new one on me ;) lol.

Thanks for the input everyone! Now all I;ve got to do is go and implement it :s lol.

Thanks again!