37 #define VuoPoint2d_SUPPORTS_COMPARISON
62 return (VuoPoint2d){x, y};
72 return (VuoPoint2d){ f[0], f[1] };
109 return (a.x*a.x + a.y*a.y);
127 if (fabs(a.x) < 0.000001)
128 a.x = copysign(0.000001, a.x);
129 if (fabs(a.y) < 0.000001)
130 a.y = copysign(0.000001, a.y);
140 return sqrtf(a.x*a.x + a.y*a.y);
149 return a / sqrtf(a.x * a.x + a.y * a.y);
167 return u.x*v.x+u.y*v.y;
176 return sqrtf( (a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y) );
185 return a * (1 - t) + b * t;
203 (float)
VuoReal_spring(timeSinceDrop, dropPosition.x, restingPosition.x, period, damping),
204 (float)
VuoReal_spring(timeSinceDrop, dropPosition.y, restingPosition.y, period, damping)
222 static inline VuoPoint2d
VuoPoint2d_clampn(VuoPoint2d point, VuoPoint2d limitA, VuoPoint2d limitB)
241 return (VuoPoint2d) {
250 static inline VuoPoint2d
VuoPoint2d_snap(VuoPoint2d a, VuoPoint2d center, VuoPoint2d snap)
253 return (VuoPoint2d) {
254 center.x + nonzeroSnap.x * (int)round( (a.x-center.x) / nonzeroSnap.x ),
255 center.y + nonzeroSnap.y * (
int)round( (a.y-center.y) / nonzeroSnap.y )