|
|
Hello group, have you ever tried to use clock negative values ?
I have seriously miscalculated a motion equation based on clock and the easiest
solution would involve setting clock negative value to have the motion describe
a deceleration motion if clock is negative in the form :
z = -(1/2)*(clock)^2 + zpos1*clock + zpos2
and if positive :
z = 1/2*(clock)^2 + zpos1*clock + zpos2
That vould make the object decelerate, nearly stop for clock = 0 and then
accelerate again without me having to modify rhe rest of the scene which would
be quite a long task.
and it would be quite neat, too.
but is does not seem to work, alas.
Post a reply to this message
|
|
|
|
On 09/10/2014 21:28, rodv92 wrote:
> Hello group, have you ever tried to use clock negative values ?
>
> I have seriously miscalculated a motion equation based on clock and the easiest
> solution would involve setting clock negative value to have the motion describe
> a deceleration motion if clock is negative in the form :
>
> z = -(1/2)*(clock)^2 + zpos1*clock + zpos2
>
> and if positive :
>
> z = 1/2*(clock)^2 + zpos1*clock + zpos2
>
> That vould make the object decelerate, nearly stop for clock = 0 and then
> accelerate again without me having to modify rhe rest of the scene which would
> be quite a long task.
>
> and it would be quite neat, too.
>
>
> but is does not seem to work, alas.
I had no problem with :
povray -Ivor.pov +W640 +H480 +A0.01 +KI-2 +KF5 +KFI0 +KFF10
debug show clock from -2 to 5, in 11 frames.
What was your line like ?
--
IQ of crossposters with FU: 100 / (number of groups)
IQ of crossposters without FU: 100 / (1 + number of groups)
IQ of multiposters: 100 / ( (number of groups) * (number of groups))
Post a reply to this message
|
|
|
|
Le_Forgeron <jgr### [at] freefr> wrote:
> On 09/10/2014 21:28, rodv92 wrote:
> > Hello group, have you ever tried to use clock negative values ?
> >
> > I have seriously miscalculated a motion equation based on clock and the easiest
> > solution would involve setting clock negative value to have the motion describe
> > a deceleration motion if clock is negative in the form :
> >
> > z = -(1/2)*(clock)^2 + zpos1*clock + zpos2
> >
> > and if positive :
> >
> > z = 1/2*(clock)^2 + zpos1*clock + zpos2
> >
> > That vould make the object decelerate, nearly stop for clock = 0 and then
> > accelerate again without me having to modify rhe rest of the scene which would
> > be quite a long task.
> >
> > and it would be quite neat, too.
> >
> >
> > but is does not seem to work, alas.
>
> I had no problem with :
>
> povray -Ivor.pov +W640 +H480 +A0.01 +KI-2 +KF5 +KFI0 +KFF10
>
> debug show clock from -2 to 5, in 11 frames.
>
> What was your line like ?
> --
> IQ of crossposters with FU: 100 / (number of groups)
> IQ of crossposters without FU: 100 / (1 + number of groups)
> IQ of multiposters: 100 / ( (number of groups) * (number of groups))
of course, you can simply just factor out a -1 and your calculation will be:
z = -(1/2)*(-clock)^2 - zpos1*clock + zpos2
but if it's motion equations you're looking for, you can try my animation
macros. You can add them together to form complex chains of actions.
the initAnimation macro has to be called first to set up the environment.
regards,
A.D.B.
#include "math.inc"
#debug concat("!! anim.inc version 1.0b !!\n")
/******************************************************************************
* Name: initAnimation Date: 9/14/2010 *
* *
* Auth: Anthony D. Baye *
* Args: Time *
* Desc: Takes the animation length as a ordered- triple in the form <h, m, s>. *
* Re-computes duration in seconds and defines a global constant "_TICK_". *
* Also defines a flag for error-checking purposes. *
* Ensures that the clock is running, before initializing animation *
* environment. *
******************************************************************************/
#macro initAnimation(Time)
#if(clock_on)
#local Seconds = Time.x*3600 + Time.y*60 + Time.z;
#declare _TICK_ = (final_clock - initial_clock) / Seconds;
#declare _ANIMATION_TIMER_ = true;
#else
#error "Error! clock not running.\n"
#end
#end
/*************************************************
* Name: eClock Date: 9/14/2010 *
* *
* Auth: Anthony D. Baye *
* Args: Time *
* Desc: Receives a time index as a vector *
* recomputes the time in seconds and returns *
* the corresponding number of ticks. *
*************************************************/
#macro eClock(Time)
// #ifdef(_ANIMATION_TIMER_)
#local Seconds = (Time.x*3600 + Time.y*60 + Time.z);
// #debug concat("event_clock = " str(_TICK_*Seconds,0,6) "\n")
(_TICK_*Seconds)
// #else
// #error "Animation timer not defined: Call initAnimation first.\n"
// #end
#end
/*************************************************
* Name: Timer Date: 9/14/2010 *
* *
* Auth: Anthony D. Baye *
* Args: Type, Start, Finish, speed *
* Desc: Computes an event timer for an effect. *
* Can be multiplied by a direction-vector. *
* *
* Type: type of motion; accelerating/steady *
* Start: Starting time index for event. *
* Finish: Ending time index for event. *
* speed: event speed in units per second. *
* If type=1 this is Delta-V *
* If type=2 this is the acceleration *
* If type=3 this is the speed *
* If type=4 this is the distance. *
*************************************************/
#macro Timer(Type, Start, Finish, Q)
#ifdef(_ANIMATION_TIMER_)
#local D = (Finish - Start);
#local T = (D.x*3600 + D.y*60 + D.z);
#if((clock > eClock(Start)) & (clock <= eClock(Finish)))
// While the clock is within the proper range, calculate the
required value.
#switch(Type)
#case(1) // Given Delta-V.
((T*Q/2)*pow((clock-eClock(Start))/eClock(D),2))
#break
#case(2) // Given Acceleration.
(((Q*T*T)/2)*pow((clock-eClock(Start))/eClock(D),2))
#break
#case(3) // Constant velocity over time.
(T*Q*( ( clock - eClock(Start) ) / eClock(D) ) )
#break
#case(4) // Constant Distance over time.
( Q*( ( clock - eClock(Start) ) / eClock(D) ) )
#break
#end
#else
// Once the event is ended, return a value for the LAST frame of
the event.
// this will prevent the object from snapping back to the origin.
#if(clock > eClock(Finish))
#switch(Type)
#case(1)
((Q/2)*T) // This was the distance travelled while
changing velocities
#break
#case(2)
(0.5*Q*T*T) // This is the distance travelled while
accelerating
#break
#case(3)
Q*T // This is the distance travelled at Speed (Q)
#break
#case(4)
Q // Distance travelled over period (D)
#break
#end
#else
0
#end
#end
/* #if((Type < 1) & (Type > 4))
#error "first parameter must be 1, 2, 3 or 4\n
1: accelerating motion based on ending velocity\n
2: accelerating motion based on acceleration\n
3: steady motion based on velocity\n"
4: steady motion based on distance travelled\n"
#end*/
#else
#warning "Animation Timer not initialized.\n"
#warning "call initAnimation(<H,M,S>) to initialize.\n"
0
#end
#end
Post a reply to this message
|
|