Return-Path: Received: from mail-wg0-f45.google.com ([74.125.82.45] verified) by media-motion.tv (CommuniGate Pro SMTP 4.2.10) with ESMTP-TLS id 5002695 for AE-List@media-motion.tv; Thu, 14 Mar 2013 02:59:37 +0100 Received: by mail-wg0-f45.google.com with SMTP id dq12so1632566wgb.24 for ; Wed, 13 Mar 2013 19:06:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:x-received:in-reply-to:references:date:message-id :subject:from:to:content-type; bh=7PWIDHLkh9GG1J4t1NcG3/enwDW13kd6iMyeBLFyRBs=; b=rMXSCCWLugWmjmhK03ppinWCEoUKZKva6no8rRNC9DJAUnWcvEG/ao2iOXGfaLt5mx kNTind38TUw1i4y/09k2u6PL9RcMmDQaG8rOcmLLiuNXrAX4rRnxIuW3f/EpWDVCjDvo HALRpSg/PIMOclgIbSLGA++CdigiHWneRSys/HrUMAQM6yEI9jwo4GIurGdSc0PA7xpp 74Y6RlzYbv9MGUsQq8q7uvOLi3j6XEAMTYE0b+fPXj/OECJJ641Ud99rjo8hTV0XdlJ7 6daPBhyHLDQ+r5fVivdVP8VB8IHwIoXAHJVJA4mzdqRHKngmowEThGvs89xgM+ZpjiDZ ol4A== MIME-Version: 1.0 X-Received: by 10.194.173.167 with SMTP id bl7mr766229wjc.50.1363226799289; Wed, 13 Mar 2013 19:06:39 -0700 (PDT) Received: by 10.194.59.9 with HTTP; Wed, 13 Mar 2013 19:06:39 -0700 (PDT) In-Reply-To: References: Date: Wed, 13 Mar 2013 22:06:39 -0400 Message-ID: Subject: Re: [AE] Divide by Zero Errors... From: Andrew Embury To: After Effects Mail List Content-Type: multipart/alternative; boundary=089e010d85101eba6004d7d8f9a0 --089e010d85101eba6004d7d8f9a0 Content-Type: text/plain; charset=ISO-8859-1 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 >> > > --089e010d85101eba6004d7d8f9a0 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Hey Bruce!

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

I'm sorry, I'm not very programming minded when it comes to ma= tters such as this. I've dabbled before but those days are far behind m= e.

Thank you for your time.
- Andrew



On Wed, Mar 13, 2013 at 10:0= 0 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 Wed, Mar 13, 2013 at 8:55 PM, Andrew Embury <a= embury@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


--089e010d85101eba6004d7d8f9a0--