summaryrefslogtreecommitdiffstats
path: root/kpovmodeler/pmmath.cpp
blob: 8aedab76eab7e61c1ced0ef724d329ca19db367a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/*
**************************************************************************
                                 description
                             --------------------
    copyright            : (C) 2000-2001 by Andreas Zehender
    email                : [email protected]
**************************************************************************

**************************************************************************
*                                                                        *
*  This program is free software; you can redistribute it and/or modify  *
*  it under the terms of the GNU General Public License as published by  *
*  the Free Software Foundation; either version 2 of the License, or     *
*  (at your option) any later version.                                   *
*                                                                        *
**************************************************************************/


// some helper functions

#include "pmmath.h"
#include <math.h>

bool approx( double v1, double v2, double epsilon )
{
   return fabs( v1 - v2 ) < epsilon;
}

bool approxZero( double v, double epsilon )
{
   return fabs( v ) < epsilon;
}

double rad2Deg( double rad )
{
   return rad / M_PI * 180.0;
}

double deg2Rad( double deg )
{
   return deg * M_PI / 180.0;
}

double pmatan( double s, double c )
{
   double a;
   if( approxZero( c ) )
   {
      if( s > 0 )
         a = M_PI_2;
      else
         a = -M_PI_2;
   }
   else
      a = atan2( s, c );
   
   return a;
}

int pmpot( int x, int y )
{
   int i;
   int result = 1;
   for( i = 0; i < y; i++ )
      result *= x;
   return result;
}