17 "description" :
"Type of curve.",
38 const char *valueAsString =
"";
39 if (json_object_get_type(js) == json_type_string)
40 valueAsString = json_object_get_string(js);
42 if (strcmp(valueAsString,
"quadratic") == 0)
43 return VuoCurve_Quadratic;
44 else if (strcmp(valueAsString,
"cubic") == 0)
45 return VuoCurve_Cubic;
46 else if (strcmp(valueAsString,
"circular") == 0)
47 return VuoCurve_Circular;
48 else if (strcmp(valueAsString,
"exponential") == 0)
49 return VuoCurve_Exponential;
51 return VuoCurve_Linear;
60 char *valueAsString =
"linear";
62 if (value == VuoCurve_Quadratic)
63 valueAsString =
"quadratic";
64 else if (value == VuoCurve_Cubic)
65 valueAsString =
"cubic";
66 else if (value == VuoCurve_Circular)
67 valueAsString =
"circular";
68 else if (value == VuoCurve_Exponential)
69 valueAsString =
"exponential";
71 return json_object_new_string(valueAsString);
94 char *valueAsString =
"Linear";
96 if (value == VuoCurve_Quadratic)
97 valueAsString =
"Quadratic";
98 else if (value == VuoCurve_Cubic)
99 valueAsString =
"Cubic";
100 else if (value == VuoCurve_Circular)
101 valueAsString =
"Circular";
102 else if (value == VuoCurve_Exponential)
103 valueAsString =
"Exponential";
105 return strdup(valueAsString);
114 if (loop == VuoLoopType_Loop)
116 normalizedTime = fmod(time/duration, 1);
118 normalizedTime = 1. + normalizedTime;
120 else if (loop == VuoLoopType_Mirror)
122 normalizedTime = fmod(time/duration, 2);
124 normalizedTime = 2. + normalizedTime;
125 if (normalizedTime > 1)
126 normalizedTime = 2. - normalizedTime;
130 if (easing == VuoCurveEasing_Out)
131 x = normalizedTime - 1.;
132 else if (easing == VuoCurveEasing_InOut)
134 if (normalizedTime < 0.5)
135 x = normalizedTime*2.;
137 x = (normalizedTime-1.)*2.;
139 else if (easing == VuoCurveEasing_Middle)
141 if (normalizedTime < 0.5)
142 x = (normalizedTime-0.5)*2.;
144 x = (normalizedTime-0.5)*2.;
148 if (curve == VuoCurve_Linear)
149 normalizedValue = fabs(x);
150 else if (curve == VuoCurve_Quadratic)
151 normalizedValue = pow(x,2);
152 else if (curve == VuoCurve_Cubic)
153 normalizedValue = pow(fabs(x),3);
154 else if (curve == VuoCurve_Circular)
155 normalizedValue = -(sqrt(1.-pow(x,2))-1.);
156 else if (curve == VuoCurve_Exponential)
157 normalizedValue = pow(2,10.*(fabs(x)-1.));
159 if (easing == VuoCurveEasing_Out)
160 normalizedValue = 1. - normalizedValue;
161 else if (easing == VuoCurveEasing_InOut)
163 if (normalizedTime < 0.5)
164 normalizedValue /= 2.;
166 normalizedValue = 1 - normalizedValue/2.;
168 else if (easing == VuoCurveEasing_Middle)
170 if (normalizedTime < 0.5)
171 normalizedValue = (1.-normalizedValue)/2.;
173 normalizedValue = (normalizedValue+1.)/2.;
176 return normalizedValue*(endPosition-startPosition) + startPosition;
185 p.x =
VuoReal_curve(time, startPosition.x, endPosition.x, duration, curve, easing, loop);
186 p.y =
VuoReal_curve(time, startPosition.y, endPosition.y, duration, curve, easing, loop);
196 p.x =
VuoReal_curve(time, startPosition.x, endPosition.x, duration, curve, easing, loop);
197 p.y =
VuoReal_curve(time, startPosition.y, endPosition.y, duration, curve, easing, loop);
198 p.z =
VuoReal_curve(time, startPosition.z, endPosition.z, duration, curve, easing, loop);