Return-Path: Received: from mail-ea0-f177.google.com ([209.85.215.177] verified) by media-motion.tv (CommuniGate Pro SMTP 4.2.10) with ESMTP-TLS id 5002712 for AE-List@media-motion.tv; Thu, 14 Mar 2013 03:03:15 +0100 Received: by mail-ea0-f177.google.com with SMTP id r16so722277ead.8 for ; Wed, 13 Mar 2013 19:10:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:mime-version:in-reply-to:references:from:date:message-id :subject:to:content-type; bh=I8rrO9kpFI7N+jizF17Znhn/CgY2xrWyGhdYS/r/Hdw=; b=iDx/uoFIGItvYz3XyQNdtFgOFu5PQ4ElLb+oOY2TZb7HQg4DC+2a7HUvbQ2SCDprX4 mLpB6K1nq0BOXwLUl1cppKzDKYBZE5jVmi+sNTNJt2KBEG1cm5zg4aNHGePkqLFNF7Ux V6nBWUVPyHtAdyeNPwO49hh9OCqQKsnayvrHkrjgRFLIG/D7lkvDgC9zZdXq0ZHN4C6Y 273m684bxZnbziX0O27P8J72U2uSEmNMz1x8uL9BvyXCxXxJsSqs7jcxjFB8w+LM5scm +T+gle9btRFxJTpBfqlsvOxQxAamIctaZtlcdONKud7mNI6T8y9VCTWJ4d2q5yb8L/re RtpA== X-Received: by 10.14.211.65 with SMTP id v41mr1680331eeo.33.1363227017169; Wed, 13 Mar 2013 19:10:17 -0700 (PDT) MIME-Version: 1.0 Received: by 10.223.41.13 with HTTP; Wed, 13 Mar 2013 19:09:57 -0700 (PDT) In-Reply-To: References: From: Bruce Wainer Date: Wed, 13 Mar 2013 22:09:57 -0400 Message-ID: Subject: Re: [AE] Divide by Zero Errors... To: After Effects Mail List Content-Type: multipart/alternative; boundary=047d7b621e9c1b6ebe04d7d90626 --047d7b621e9c1b6ebe04d7d90626 Content-Type: text/plain; charset=ISO-8859-1 Well for now just replace it with a dummy value, like 10 or 5 or 54321. We have to see if that makes the errors go away. After we determine whether or not "Math.exp(decay*t)" is causing the errors, then we can put it back in and make the errors go away. You just can't fix a problem before you determine where the problem is. Bruce On Wed, Mar 13, 2013 at 10:06 PM, Andrew Embury wrote: > Hey Bruce! > > What would I replace "Math.exp(decay*t)" with exactly? > > I'm sorry, I'm not very programming minded when it comes to matters such > as this. I've dabbled before but those days are far behind me. > > Thank you for your time. > > - Andrew > > > > On Wed, Mar 13, 2013 at 10:00 PM, Bruce Wainer wrote: > >> Andrew, >> >> The only thing I can think of is that the Math.exp() method is returning >> 0 or infinity when a large number is passed in. So if e^(decay*t) is too >> large of a number, the result becomes 0 or infinity (not sure which it >> would be but either way division would be impossible). With exponents this >> is really easy to do, as the numbers get very large very quickly. >> >> Just to test, if you replace the "Math.exp(decay*t)" with something else, >> do the errors go away? If so you've found the problem code. I think it has >> to be though because it's the only divisor that is variable. The only >> solution would be to protect that code by creating a variable to hold that >> result. If it is 0 or infinity, reassign that variable to a very very large >> number (preferably the maximum value that the datatype can hold). >> >> Sorry for using general programming terms, I've done much more Java, PHP, >> and SQL lately than Javascript (which the After Effects expression engine >> is based on). Oh the joys of being a Media Arts and Telecommunications dual >> major. >> >> Bruce Wainer >> >> >> On Wed, Mar 13, 2013 at 8:55 PM, Andrew Embury wrote: >> >>> Hey guys/ gals! >>> >>> Quick question.... >>> >>> Whilst animating in AE tonight I was using the following expression: >>> >>> amp = .03; >>> freq = 4.0; >>> decay = 12.0; >>> n = 0; >>> if (numKeys > 0){ >>> n = nearestKey(time).index; >>> if (key(n).time > time){ >>> n--; >>> }} >>> if (n == 0){ t = 0; >>> }else{ >>> t = time - key(n).time; >>> } >>> if (n > 0){ >>> v = velocityAtTime(key(n).time - thisComp.frameDuration/10); >>> value + v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t); >>> }else{value} >>> >>> >>> Never ever have I since have encountered so many "Divide by Zero" errors >>> in my life with AE. >>> >>> Currently working with CS6 and I am applying this expression to Scale, >>> Position, and Rotation. >>> >>> Any help would be greatly appreciated. >>> >>> Thank you. >>> >>> - Andrew >>> >> >> > --047d7b621e9c1b6ebe04d7d90626 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Well for now just replace it with a dummy value, like= 10 or 5 or 54321. We have to see if that makes the errors go away. After w= e determine whether or not "Math.exp(decay*t)" is causing the err= ors, then we can put it back in and make the errors go away. You just can&#= 39;t fix a problem before you determine where the problem is.

Bruce


On Wed, Mar 13, 2013 at 10:06 PM, Andrew Embury <aembury@gmail= .com> wrote:
Hey Bruce!

What would I replace "Math.exp(decay*t)" with exactly?

I'm sorry, I'm not very programming minded when it c= omes to matters such as this. I've dabbled before but those days are fa= r behind me.

Thank you for your time.

- Andrew



On Wed, Mar 13, 2013 at 10:00 PM, Bruce = Wainer <brwainer@gmail.com> wrote:
Andrew,

The onl= y thing I can think of is that the Math.exp() method is returning 0 or infi= nity when a large number is passed in. So if e^(decay*t) is too large of a = number, the result becomes 0 or infinity (not sure which it would be but ei= ther way division would be impossible). With exponents this is really easy = to do, as the numbers get very large very quickly.

Just to test, if you replace the "Math.exp(decay*t)" with som= ething else, do the errors go away? If so you've found the problem code= . I think it has to be though because it's the only divisor that is var= iable. The only solution would be to protect that code by creating a variab= le to hold that result. If it is 0 or infinity, reassign that variable to a= very very large number (preferably the maximum value that the datatype can= hold).

Sorry for using general programming terms, I've done much mor= e Java, PHP, and SQL lately than Javascript (which the After Effects expres= sion engine is based on). Oh the joys of being a Media Arts and Telecommuni= cations dual major.

Bruce Wainer


On We= d, Mar 13, 2013 at 8:55 PM, Andrew Embury <aembury@gmail.com> wrote:
Hey guys/ gals!

Quick question....

Whilst animating in AE = tonight I was using the following expression:

amp =3D .03;
freq =3D 4.0;
decay =3D 12.0;
n = =3D 0;
if (numKeys > 0){
n =3D nearestKey(time).inde= x;
if (key(n).time > time){
n--;
}}
<= div>if (n =3D=3D 0){ t =3D 0;
}else{
t =3D time - key(n).time;
}
if (n= > 0){
v =3D velocityAtTime(key(n).time - thisComp.frameDurati= on/10);
value + v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t= );
}else{value}


Never ever have I= since have encountered so many "Divide by Zero" errors in my lif= e with AE.

Currently working with CS6 and I am app= lying this expression to Scale, Position, and Rotation.

Any help would be greatly appreciated.

Thank you.

= - Andrew



--047d7b621e9c1b6ebe04d7d90626--