#include <stdio.h>
#include <stdint.h>
#ifndef M_PI
// Stolen from /usr/include/math.h
#define M_PI 3.14159265358979323846
#endif
#define DEGREES_TO_RADIANS(d) ((d) *(float)M_PI / 180.0f)
#define RADIANS_TO_DEGREES(r) ((r) *180.0f / (float)M_PI)
#define RADIANS_TO_POSITION(r) (DEGREES_TO_POSITION(RADIANS_TO_DEGREES((r))))
#define POSITION_TO_RADIANS(p) (DEGREES_TO_RADIANS(POSITION_TO_DEGREES((p))))
#define THIRTY_DEGREES_IN_COUNTS (100000)
/* Define a generalized fractional multiply */
#define FRMULQ(a, b, q) (((a) * (b)) >> (q))
#define RAY_TIME_US (1.f / 0.48f)
static inline float POSITION_TO_DEGREES(float position)
{
return position * (30.0f / THIRTY_DEGREES_IN_COUNTS);
}
int main(void) {
// your code goes here
const float first_ray_pos = 22091.126953;
const int32_t distance_from_first_ray = 1;
const int32_t vel = -19;
const float vel_adder = (distance_from_first_ray * vel * RAY_TIME_US / 10.f);
const float position = first_ray_pos + vel_adder;
const float el_radians = POSITION_TO_RADIANS(position);
printf("vel_adder=%f, position = %f, el_radians=%f", vel_adder
, position
, el_radians
); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KI2lmbmRlZiBNX1BJCi8vIFN0b2xlbiBmcm9tIC91c3IvaW5jbHVkZS9tYXRoLmgKI2RlZmluZSBNX1BJIDMuMTQxNTkyNjUzNTg5NzkzMjM4NDYKI2VuZGlmCgojZGVmaW5lIERFR1JFRVNfVE9fUkFESUFOUyhkKSAoKGQpICooZmxvYXQpTV9QSSAvIDE4MC4wZikKI2RlZmluZSBSQURJQU5TX1RPX0RFR1JFRVMocikgKChyKSAqMTgwLjBmIC8gKGZsb2F0KU1fUEkpCiNkZWZpbmUgUkFESUFOU19UT19QT1NJVElPTihyKSAoREVHUkVFU19UT19QT1NJVElPTihSQURJQU5TX1RPX0RFR1JFRVMoKHIpKSkpCiNkZWZpbmUgUE9TSVRJT05fVE9fUkFESUFOUyhwKSAoREVHUkVFU19UT19SQURJQU5TKFBPU0lUSU9OX1RPX0RFR1JFRVMoKHApKSkpCgojZGVmaW5lIFRISVJUWV9ERUdSRUVTX0lOX0NPVU5UUyAoMTAwMDAwKQoKLyogRGVmaW5lIGEgZ2VuZXJhbGl6ZWQgZnJhY3Rpb25hbCBtdWx0aXBseSAqLwojZGVmaW5lIEZSTVVMUShhLCBiLCBxKSAoKChhKSAqIChiKSkgPj4gKHEpKQojZGVmaW5lIFJBWV9USU1FX1VTICgxLmYgLyAwLjQ4ZikKCnN0YXRpYyBpbmxpbmUgZmxvYXQgUE9TSVRJT05fVE9fREVHUkVFUyhmbG9hdCBwb3NpdGlvbikKewogICAgcmV0dXJuIHBvc2l0aW9uICogKDMwLjBmIC8gVEhJUlRZX0RFR1JFRVNfSU5fQ09VTlRTKTsKfQoKaW50IG1haW4odm9pZCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJY29uc3QgZmxvYXQgZmlyc3RfcmF5X3BvcyA9IDIyMDkxLjEyNjk1MzsKCWNvbnN0IGludDMyX3QgZGlzdGFuY2VfZnJvbV9maXJzdF9yYXkgPSAxOwoJY29uc3QgaW50MzJfdCB2ZWwgPSAtMTk7Cgljb25zdCBmbG9hdCB2ZWxfYWRkZXIgPSAoZGlzdGFuY2VfZnJvbV9maXJzdF9yYXkgKiB2ZWwgKiBSQVlfVElNRV9VUyAvIDEwLmYpOwoJY29uc3QgZmxvYXQgcG9zaXRpb24gPSBmaXJzdF9yYXlfcG9zICsgdmVsX2FkZGVyOwoJY29uc3QgZmxvYXQgZWxfcmFkaWFucyA9IFBPU0lUSU9OX1RPX1JBRElBTlMocG9zaXRpb24pOwoJcHJpbnRmKCJ2ZWxfYWRkZXI9JWYsIHBvc2l0aW9uID0gJWYsIGVsX3JhZGlhbnM9JWYiLCB2ZWxfYWRkZXIsIHBvc2l0aW9uLCBlbF9yYWRpYW5zKTsKCXJldHVybiAwOwp9Cg==