Advertisement
FatalSleep

MATH AND C++

Dec 30th, 2013
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <Windows.h>
  3. #include <math.h>
  4. using namespace std;
  5. #define pi 3.14159265
  6. #define radian ( 180 / pi )
  7.  
  8. double factorial( double n ) {
  9. if ( n < 1 ) {
  10. return 1;
  11. }
  12.  
  13. double r = 1;
  14. for( double i = 1; i <= n; i ++ ) {
  15. r *= i;
  16. }
  17.  
  18. return r;
  19. }
  20. double exponent( double n , double e ) {
  21. double r = n;
  22. for( double i = 0; i < e - 1; i ++ ) {
  23. r *= n;
  24. }
  25.  
  26. return r;
  27. }
  28. double sign( double n ) {
  29. return ( n > 0 ) - ( n < 0 );
  30. }
  31. double sqr( double x ) {
  32. return x * x;
  33. }
  34. double pointdir( double x1 , double y1 , double x2 , double y2 ) {
  35. return atan2( y2 - y1 , x2 - x1 ) * radian;
  36. }
  37. double pointdist( double x1 , double y1 , double x2 , double y2 ) {
  38. return sqrt( sqr( x2 - x1 ) + sqr( y2 - y1 ) );
  39. }
  40. double pointdist3d( double x1 , double y1 , double z1 , double x2 , double y2 , double z2 ) {
  41. return sqrt( sqr( x2 - x1 ) + sqr( y2 - y1 ) + sqr( z2 - z1 ) );
  42. }
  43. double lendirx( double l , double d ) {
  44. return l * cos( d * radian );
  45. }
  46. double lendiry( double l , double d ) {
  47. return l * sin( d * radian );
  48. }
  49. double lendirz( double l , double d ) {
  50. return l * sin( d * radian );
  51. }
  52. double clamp( double val , double min , double max ) {
  53. return ( ( val <= min ) * min ) + ( ( val >= max ) * max ) + ( ( val > min && val < max ) * val );
  54. }
  55. double neg( double x ) {
  56. return x * ( ( ( x < 0 ) * 1 ) + ( ( x > 0 ) * -1 ) );
  57. }
  58. double aspect_ratio( double w , double h ) {
  59. return w / h;
  60. }
  61. double scale_factor( double w ) {
  62. return 1 / w;
  63. }
  64. double readbit( double byt , double bit ) {
  65. return ( int( byt ) & int( exponent( 2 , 7 - bit ) ) ) > 0;
  66. }
  67. double buildbit( double bt1 , double bt2 , double bt3 , double bt4 , double bt5 , double bt6 , double bt7 , double bt8 ) {
  68. return ( 128 * bt1 ) + ( 64 * bt2 ) + ( 32 * bt3 ) + ( 16 * bt4 ) + ( 8 * bt5 ) + ( 4 * bt6 ) + ( 2 * bt7 ) + ( 1 * bt8 );
  69. }
  70. double fixrotation( double rot ) {
  71. int fix = rot + ( ( rot > 360 ) * -360 ) + ( ( rot < 0 ) * 360 );
  72. if ( fix > 360 || fix < 0 ) { return fixrotation( fix ); }
  73. return fix;
  74. }
  75.  
  76. int main() {
  77. cout << pointdir( 0 , 0 , -1 , 1 ) << endl;
  78. cout << pointdist( 0 , 0 , 5 , 5 ) << endl;
  79. cout << pointdist3d( 0 , 0 , 0 , 5 , 5 , 5 ) << endl;
  80. cout << sign( 10 ) << endl;
  81. cout << exponent( 5 , 2 ) << endl;
  82. cout << factorial( 5 ) << endl;
  83. cout << sqr( 6 ) << endl;
  84. cout << clamp( 8 , 0 , 16 ) << endl;
  85. cout << neg( -1 ) << neg( 1 ) << endl;
  86. cout << buildbit( 0 , 1 , 1 , 0 , 1 , 0 , 0 , 1 ) << endl;
  87. cout << readbit( 192 , 0 ) << endl;
  88. cout << fixrotation( 365 * 3 ) << endl;
  89.  
  90. double xx;
  91. cin >> xx;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement