r98: finished object-orient convern of Scanner & Phantom
[ctsim.git] / include / kmath.h
index 5599327d2c285de22af7b1745f3965edf8b86fbd..0ed4f2a3cb3de6319d8dbd75fbfa7acbb1b2c667 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: kmath.h,v 1.12 2000/06/13 16:20:31 kevin Exp $
+**  $Id: kmath.h,v 1.15 2000/06/18 10:27:11 kevin Exp $
 **
 **  This program is free software; you can redistribute it and/or modify
 **  it under the terms of the GNU General Public License (version 2) as
@@ -30,7 +30,6 @@
 
 #include <stdio.h>
 #include <math.h>
-#include <algo.h>
 
 #define PI      3.14159265358979323846
 #define HALFPI  1.57079632679489661923 /* PI divided by 2 */
 #define F_EPSILON      1.0E-6
 #define D_EPSILON      1.0E-10
 
-#define DEG_TO_RAD(x)  (x*(PI/180.))
-#define RAD_TO_DEG(x)  (x*(180./PI))
-
 #define ASSUMEDZERO  1E-10
 
 typedef double GRFMTX_2D[3][3];
 typedef double GRFMTX_3D[4][4];
 
+inline double 
+convertDegreesToRadians (double x)
+{ return (x * (PI/180.)); }
+
+inline double
+convertRadiansToDegrees (double x)
+{ return (x*(180./PI)); }
 
 template<class T>
 inline T nearest (double x)
 { return (x > 0 ? static_cast<T>(x+0.5) : static_cast<T>(x-0.5)); }
 
 template<class T>
-inline T clamp (T value, T upperBounds, T lowerBounds)
+inline T clamp (T value, T lowerBounds, T upperBounds)
 { return (value >= upperBounds ? upperBounds : (value <= lowerBounds ? lowerBounds : value )); }
 
+template<class T>
+inline T lineLength (T x1, T y1, T x2, T y2)
+{ return static_cast<T>( sqrt ((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1)) ); }
+
+template<class T>
+inline void minmax_array (const T* array, const int n, T& min, T& max)
+{
+  max = min = array[0];
+
+  for (int i = 1; i < n; i++)
+    if (array[i] < min)
+      min = array[i];
+    else if (array[i] > max)
+      max = array[i];
+}
 
 /* clip.cpp */
 int clip_rect(double *x1, double *y1, double *x2, double *y2, const double rect[4]);
@@ -86,8 +104,4 @@ void scale2d(double x[], double y[], int pts, double xfact, double yfact);
 /* simpson.cpp */
 double simpson(const double xmin, const double xmax, const double *y, const int np);
 
-/* minmax.cpp */
-void minmax_dvector(const double array[], const int pts, double *xmin, double *xmax);
-
-
 #endif