]> Dogcows Code - chaz/rasterize/blobdiff - common.h
add geometry caching and a rotation script
[chaz/rasterize] / common.h
index 6224c80cc13eab493ed6cbae0b8d99b3ea0e572f..dd6f034bc9171fa9dd67e5d73d52e0ef7550de13 100644 (file)
--- a/common.h
+++ b/common.h
@@ -37,6 +37,7 @@ typedef double scal_t;
 #define scal_ceil   ceil
 #define scal_min    fmin
 #define scal_max    fmax
+#define scal_abs    fabs
 #define scal_pow    pow
 #define scal_sqrt   sqrt
 #define scal_sin    sin
@@ -53,6 +54,7 @@ typedef float scal_t;
 #define scal_ceil   ceilf
 #define scal_min    fminf
 #define scal_max    fmaxf
+#define scal_abs    fabsf
 #define scal_pow    powf
 #define scal_sqrt   sqrtf
 #define scal_sin    sinf
@@ -66,6 +68,26 @@ typedef float scal_t;
 #define scal_min2(A,B,C) scal_min(scal_min(A,B),C)
 #define scal_max2(A,B,C) scal_max(scal_max(A,B),C)
 
+#define SCAL_EPSILON (S(0.000001))
+
+/*
+ * Check if two scalars are mostly equal, given a margin of error.
+ */
+INLINE_MAYBE
+bool scal_isequal2(scal_t a, scal_t b, scal_t e)
+{
+    return scal_abs(a -b) < e;
+}
+
+/*
+ * Check if two scalars are mostly equal.
+ */
+INLINE_MAYBE
+bool scal_isequal(scal_t a, scal_t b)
+{
+    return scal_isequal2(a, b, SCAL_EPSILON);
+}
+
 /*
  * Clamp a scalar between two values.
  */
This page took 0.017717 seconds and 4 git commands to generate.