HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CL_Support.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  * NAME: CL Library
7  *
8  * COMMENTS: Contains helpful utilities and animation functions
9  *
10 */
11 
12 #ifndef __CL_ANIMATION_FUNCTIONS_H__
13 #define __CL_ANIMATION_FUNCTIONS_H__
14 
15 #include "CL_API.h"
16 #include <SYS/SYS_Math.h>
17 #include <SYS/SYS_Types.h>
18 #include <UT/UT_Assert.h>
19 
20 #define CL_SUPPORT_ISZERO(x) ((x) > -0.00001 && (x) < 0.00001)
21 #define CL_SUPPORT_LERP(weight) (iv + (ov - iv)*weight)
22 
23 CL_API extern void
25  fpreal xscale,
26  fpreal yscale,
27  fpreal &slope,
28  fpreal &accel,
29  bool accel_ratio);
30 
31 static inline fpreal
32 CLease(fpreal t, fpreal t0, fpreal t1)
33 {
34  fpreal rt, dt; // Relative time and total time
35 
36  dt = t1 - t0;
37  if (CL_SUPPORT_ISZERO(dt))
38  return .5;
39  rt = (t - t0) / dt;
40  return (fpreal).5 - (fpreal).5 * SYScos(M_PI * rt);
41 }
42 
43 static inline fpreal
44 CLeasein(fpreal t, fpreal t0, fpreal t1)
45 {
46  fpreal rt, dt;
47 
48  dt = t1 - t0;
49  if (CL_SUPPORT_ISZERO(dt))
50  return .5;
51  rt = (t - t0) / dt;
52  return (fpreal)1. - SYScos((M_PI * (fpreal).5) * rt);
53 }
54 
55 static inline fpreal
56 CLeaseout(fpreal t, fpreal t0, fpreal t1)
57 {
58  fpreal rt, dt;
59 
60  dt = t1 - t0;
61  if (CL_SUPPORT_ISZERO(dt))
62  return .5;
63  rt = (t - t0) / dt;
64  return SYSsin((M_PI * (fpreal).5) * rt);
65 }
66 
67 static inline fpreal
68 CLevalBezier(const fpreal x[], fpreal u)
69 {
70  fpreal u1, u2, u12;
71 
72  u1 = (fpreal)1. - u;
73  u2 = u * u;
74  u12 = u1 * u1;
75 
76  return x[0] * u12 * u1 + (fpreal)3. * x[1] * u * u12 + x[3] * u2 * u
77  + (fpreal)3. * x[2] * u2 * u1;
78 }
79 #endif
GA_API const UT_StringHolder accel
#define M_PI
Definition: fmath.h:90
CL_API void CLstretchSlopeAccel(fpreal xscale, fpreal yscale, fpreal &slope, fpreal &accel, bool accel_ratio)
GLdouble u1
Definition: glad.h:2676
#define CL_API
Definition: CL_API.h:10
#define CL_SUPPORT_ISZERO(x)
Definition: CL_Support.h:20
GLdouble GLdouble u2
Definition: glad.h:2676
GLint GLenum GLint x
Definition: glcorearb.h:409
GLdouble t
Definition: glad.h:2397
fpreal64 fpreal
Definition: SYS_Types.h:277