Advertisement
imk0tter

MOUSE_DIMENSION.cpp

Apr 5th, 2024 (edited)
583
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.90 KB | None | 0 0
  1. #include "MOUSE_DIMENSION.h"
  2.  
  3. float MOUSE_DIMENSION::RESOLUTION_AND_FOV_TO_RADIUS(float RESOLUTION, float FOV)
  4. {
  5.     //TODO: return RADIUS from FOV in PIXELS instead of DEGREES
  6.     return (RESOLUTION / sin(MOUSE_PI / (360 / FOV))) / 2;
  7. }
  8.  
  9. MOUSE_DIMENSION::MOUSE_DIMENSION(float RESOLUTION = 800, float FOV = 90, float SENSITIVITY = 1, unsigned long long CALLS_PER_INSTANCE = 1, unsigned long long INSTANCES_PER_LOSS = 360000, int MAXIMUM_SENSITIVTY = 10, int INCREMENTS_PER_UNIT_OF_SENSITIVITY = 5)
  10. {
  11.     this->m_RESOLUTION = RESOLUTION;
  12.  
  13.     this->m_RADIUS = this->RESOLUTION_AND_FOV_TO_RADIUS(RESOLUTION, FOV);
  14.     this->m_CIRCUMFERENCE = this->m_RADIUS * MOUSE_PI * 2;
  15.  
  16.     this->m_FOV = FOV;
  17.     this->m_SENSITIVITY = SENSITIVITY;
  18.  
  19.     this->m_CALLS_PER_INSTANCE = CALLS_PER_INSTANCE;
  20.     this->m_INSTANCES_PER_LOSS = INSTANCES_PER_LOSS;
  21.  
  22.     // this accounts for maximum transduced input of PI radians (THE RESULT OF TRANSDUCTION IS ALWAYS BETWEEN -PI AND PI RADIANS)
  23.     this->m_INFLATION_FACTOR = m_CALLS_PER_INSTANCE * m_INSTANCES_PER_LOSS * (MOUSE_PI * 1);
  24.  
  25.     this->m_TOTAL_ANGLE = 0;
  26. }
  27. void MOUSE_DIMENSION::UPDATE_RESOLUTION(float RESOLUTION)
  28. {
  29.     m_TOTAL_ANGLE = (m_TOTAL_ANGLE / (m_RESOLUTION / (m_RESOLUTION = RESOLUTION)));
  30.     m_RADIUS = this->RESOLUTION_AND_FOV_TO_RADIUS(RESOLUTION, this->m_FOV);
  31.     m_CIRCUMFERENCE = m_RADIUS * MOUSE_PI * 2;
  32.  
  33. }
  34. void MOUSE_DIMENSION::UPDATE_FOV(float FOV)
  35. {
  36.     m_RADIUS = this->RESOLUTION_AND_FOV_TO_RADIUS(m_RESOLUTION, m_FOV);
  37.     m_CIRCUMFERENCE = m_RADIUS * MOUSE_PI * 2;
  38.     //TODO: UPDATE CIRCUMFERENCE, INFLATION_FACTOR, and TOTAL_ANGLE
  39. }
  40. void MOUSE_DIMENSION::UPDATE_SENSITIVITY(float SENSITIVITY)
  41. {
  42.     this->m_SENSITIVITY = SENSITIVITY;
  43. }
  44. float ABSN(float INPUT)
  45. {
  46.     return sqrt(INPUT * INPUT);
  47. }
  48. float ATANN(float INPUT)
  49. {
  50.     return INPUT / ABSN(INPUT);
  51. }
  52. inline float MODULO(float x, float y)
  53. {
  54.     return fmod(x, y);
  55. }
  56. inline float INTEGERIZE(float input)
  57. {
  58.     return input - MODULO(input, 1);
  59. }
  60. inline float CLAMP(float rotations_in_n_units, float half_n_unit)
  61. {
  62.     return MODULO(INTEGERIZE(rotations_in_n_units / half_n_unit), 2) * -1 * half_n_unit + MODULO(rotations_in_n_units, half_n_unit);
  63. }
  64. float TRANSDUCE(float INPUT, float SENSITIVITY)
  65. {
  66.     return ATANN(INPUT) * 2 * asinf(ABSN(CLAMP(INPUT * SENSITIVITY, 2)) / 2);
  67. }
  68. float FORMAT_INPUT(float INPUT, float SENSITIVITY)
  69. {
  70.     return TRANSDUCE(INPUT, SENSITIVITY);
  71. }
  72. long MOUSE_DIMENSION::INPUT(float INPUT)
  73. {
  74.     long TOTAL_ANGLE = this->m_TOTAL_ANGLE;
  75.     m_TOTAL_ANGLE = static_cast<long long>(fmod(m_TOTAL_ANGLE + (FORMAT_INPUT(INPUT, this->m_SENSITIVITY) * this->m_RADIUS * this->m_INFLATION_FACTOR ),m_CIRCUMFERENCE * m_INFLATION_FACTOR));
  76.  
  77.     std::cout << "m_RESOLUTION: " << m_RESOLUTION << ", m_INFLATION_FACTOR: " << m_INFLATION_FACTOR << ", NEW_TOTAL: " << TOTAL_ANGLE << "\n";
  78.  
  79.     return static_cast<long long>(TOTAL_ANGLE / m_INFLATION_FACTOR);
  80. }
Advertisement
Comments
  • imk0tter
    30 days
    # C++ 0.85 KB | 0 0
    1. #pragma once
    2.  
    3. #define MOUSE_PI 3.14159265358979323846264338327950f
    4.  
    5. class MOUSE_DIMENSION
    6. {
    7. private:
    8.     unsigned long long m_CALLS_PER_INSTANCE;
    9.     unsigned long long m_INSTANCES_PER_LOSS;
    10.  
    11.     long long m_TOTAL_ANGLE;
    12.  
    13.     //TODO: Change to double
    14.     //unsigned long long m_INFLATION_FACTOR;
    15.     double m_INFLATION_FACTOR;
    16.  
    17.     float m_RESOLUTION;
    18.     float m_FOV;
    19.     float m_SENSITIVITY;
    20.  
    21.     float m_CIRCUMFERENCE;
    22.     float m_RADIUS;
    23.  
    24.     float RESOLUTION_AND_FOV_TO_RADIUS(float RESOLUTION, float FOV);
    25. public:
    26.     MOUSE_DIMENSION(float RESOLUTION, float FOV, float SENSITIVITY, unsigned long long CALLS_PER_INSTANCE, unsigned long long INSTANCES_PER_LOSS, int MAXIMUM_SENSITIVITY, int STATIC_SENSITIVITY_INCREMENT_SIZE);
    27.  
    28.     void UPDATE_RESOLUTION(float RESOLUTION);
    29.     void UPDATE_FOV(float FOV);
    30.     void UPDATE_SENSITIVITY(float SENSITIVITY);
    31.  
    32.     long INPUT(float INPUT);
    33. };
Add Comment
Please, Sign In to add comment
Advertisement