Creative Communities of the World Forums

The peer to peer support community for media production professionals.

Activity Forums Adobe After Effects Expressions This expression very hard to edit

  • This expression very hard to edit

    Posted by Muhammad Mont on December 5, 2020 at 9:41 pm

    I have amazing expression from Dan ebberts ,

    How can I make it repeats it self every x second ?

    its very hard to edit it by myself

    Thanks!

    elev = degreesToRadians(75);
    v = 1900;
    e = .7;
    f = .5;
    g = 5000;
    nMax = 9;
    tLaunch = 1;
     
    vy = v*Math.sin(elev);
    vx = v*Math.cos(elev);
    if (time >= tLaunch){
      t = time - tLaunch;
      tCur = 0;
      segDur = 2*vy/g;
      tNext = segDur;
      d = 0; // x distance traveled
      nb = 0; // number of bounces
      while (tNext < t && nb <= nMax){
        d += vx*segDur;
        vy *= e;
        vx *= f;
        segDur *= e;
        tCur = tNext;
        tNext += segDur;
        nb++
      }
      if(nb <= nMax){
        delta = t - tCur;
        x = d + delta*vx;
        y = delta*(vy - g*delta/2);
      }else{
        x = d;
        y = 0;
      }
      value + [x,-y]
    }else
      value
    Muhammad Mont replied 5 years, 5 months ago 2 Members · 2 Replies
  • 2 Replies
  • Dan Ebberts

    December 6, 2020 at 7:56 am

    It has limitations, but try this:

    elev = degreesToRadians(75);

    v = 1900;

    e = .7;

    f = .5;

    g = 5000;

    nMax = 9;

    tLaunch = 1;

    repeatEvery = 3;

    nSegs = Math.floor((time-tLaunch)/repeatEvery);

    vy = v*Math.sin(elev);

    vx = v*Math.cos(elev);

    t = (time - tLaunch)%repeatEvery;

    tCur = 0;

    segDur = 2*vy/g;

    dSeg = 0; // x distance traveled

    nb = 0; // number of bounces

    while (nb <= nMax){

    dSeg += vx*segDur;

    vx *= f;

    segDur *= e;

    nb++

    }

    vy = v*Math.sin(elev);

    vx = v*Math.cos(elev);

    if (time >= tLaunch){

    t = (time - tLaunch)%repeatEvery;

    tCur = 0;

    segDur = 2*vy/g;

    tNext = segDur;

    d = 0; // x distance traveled

    nb = 0; // number of bounces

    while (tNext < t && nb <= nMax){

    d += vx*segDur;

    vy *= e;

    vx *= f;

    segDur *= e;

    tCur = tNext;

    tNext += segDur;

    nb++

    }

    if(nb <= nMax){

    delta = t - tCur;

    x = d + delta*vx;

    y = delta*(vy - g*delta/2);

    }else{

    x = d;

    y = 0;

    }

    value + [x + nSegs*dSeg,-y]

    }else

    value

  • Muhammad Mont

    December 6, 2020 at 1:32 pm

    Thanks Dan its works great ?

We use anonymous cookies to give you the best experience we can.
Our Privacy policy | GDPR Policy