I think this may be the right place to post this (read that as N00B post) but, here goes.
I need to advance a point on a circle 1 revolution by point to point advancement. So, 360 advances of 1 will advance the point 1 revolution (yes, the program was coded for degrees on this instead of radians). Although I am not limited in the number of points to calculate (its actually a starting variable) I have been using 360 points as the target to calculate.
However, there is a rub. The point must accelerate while it advances. So, the start to point 1 value will be smaller than the point 1 to point 2 value, and the target end value would be that point 359 to 360 is twice the size as the start to point 1. All the values between the points must sum to 360. How do I calculate those points?
Thanks for any help on this. Just getting this started should be a help. This is asking on linear acceleration, but, I will also want non-linear as well.
I'm not sure what the problem is (or exactly what you are trying to do.) Is the problem in reducing the position from 361 degrees to 1 degree, but keeping the same level of acceleration you had at 360 degrees? (Or something along those lines.)
Originally Posted by KeeperOfTheGood
Hello and thank you Dan.
I am writing an animation script in a language called Delphi in a program called Apophysis. The team that is responsible for the Apophysis program has severely limited what can and cannot be done in the scripter. For instance, there is no log, ln, or tan functions, but there is sin and cos and arcsin and arcos (which is something I have been trying to get them to change). They have also written this over a few different versions of the Delphi language as well, so, different features are set to different standards.
So, what I am working with is a command Rotate(x), this is based on the degree system, so Rotate(1) is 1 degree and Rotate(360) is one full circle, and it is additive. Rotate(1) performed 360 times is the same end result as Rotate(360), past which Rotate(361) is the same as Rotate(1).
What I am trying to do is, in one rotation, of 360 degrees, have that accelerate. So, my first call would be something like Rotate(1), my next would be Rotate(1.1) and up to my last that would be Rotate(2). As each point is advanced to, what came before does matter, the sum of all the Rotate(x) = 360 or I will not return to my point of origin, which is important for me for two reasons. One is that the image completes all its transformations (leaving nothing undone). The other is that, once it begins to repeat all I achieve is recreating images I already have which is to me a time waster (I create typically 2500 to 10,000 images at a time at about 5 minutes per image. Repeating a few hundred images becomes hours too easily).
This is, for me just a start. I would want different types of accelerations to have different visual effect. Such as parabolic acceleration, slow - fast - slow for motion etc. Until I have done it, I will not know how it looks when assembled as a video, so, exactly what type/style of accelerations will work or look good I do not know. It is all learning still for me as well as many others that use this program in their art. Trouble for me is that, since my stroke a few years ago, math skills have been heavily hurt, and are slow in coming back. This did not even cross my mind till one friend said of my question that it is akin to dropping a ball from 360 feet and taking 360 photos of that ball and calculating the distance the ball fell from picture to picture. As it accelerates, that distance, picture to picture, would be greater, stopping when it hit the ground, and the sum of each of those distances would be the distance it fell. Having said that to me, I have to figure that no matter how I ask the question it just sounds like there is an answer and itís probably going to be blindingly and embarrassingly simple.
I hope that all made sense. Thank you for your considerations :)
It sounds a bit beyond me, I'm afraid. Sorry! :(
Originally Posted by KeeperOfTheGood
Just because I do not like to leave dangling conversations, I felt I should come and post that I solved my maths problem.
I realised what I was essentially asking is:
1X + 2X ... +360X = 360
or x = 360/sum(1:360) << I realise there is probably a different convention for writing sums....
I also realised that it need not be integers either. 360/sum(log(1):log(360)) works just as well. Any math formula that has either an all positive or negative region will work. Sin(x/2) works, Sin(x) doesn't.
I was able to write my script up using 11 different curves, and to render a very low quality animation of it. Low quality simply due to time constriants today. :( I find it shamefully low, and will redo that in time.
Video of MultiMode Acceleration Preview - Photobucket - Video and Image Hosting
Thank you for having had a look Dan