inverse sinus, floats
-
The documentation of asin should be just enoough:
'(it) Computes the principal value of the arc sine of arg'
That is you get the first quadrant angle correnspondig to the sin value passed as argument. The following program
#include #include using namespace std;
int main()
{
const size_t N = 18;
const double delta = M_PI/N;for ( double phi = 0; phi < 2*M_PI; phi += delta)
{
double s = sin(phi);
double a = asin(s);
cout << "phi = " << phi << ", sin(phi) = " << s << ", asin(sin(phi)) = " << a << "\n";
}
cout << endl;
}outputs
phi = 0, sin(phi) = 0, asin(sin(phi)) = 0
phi = 0.174533, sin(phi) = 0.173648, asin(sin(phi)) = 0.174533
phi = 0.349066, sin(phi) = 0.34202, asin(sin(phi)) = 0.349066
phi = 0.523599, sin(phi) = 0.5, asin(sin(phi)) = 0.523599
phi = 0.698132, sin(phi) = 0.642788, asin(sin(phi)) = 0.698132
phi = 0.872665, sin(phi) = 0.766044, asin(sin(phi)) = 0.872665
phi = 1.0472, sin(phi) = 0.866025, asin(sin(phi)) = 1.0472
phi = 1.22173, sin(phi) = 0.939693, asin(sin(phi)) = 1.22173
phi = 1.39626, sin(phi) = 0.984808, asin(sin(phi)) = 1.39626
phi = 1.5708, sin(phi) = 1, asin(sin(phi)) = 1.5708
phi = 1.74533, sin(phi) = 0.984808, asin(sin(phi)) = 1.39626
phi = 1.91986, sin(phi) = 0.939693, asin(sin(phi)) = 1.22173
phi = 2.0944, sin(phi) = 0.866025, asin(sin(phi)) = 1.0472
phi = 2.26893, sin(phi) = 0.766044, asin(sin(phi)) = 0.872665
phi = 2.44346, sin(phi) = 0.642788, asin(sin(phi)) = 0.698132
phi = 2.61799, sin(phi) = 0.5, asin(sin(phi)) = 0.523599
phi = 2.79253, sin(phi) = 0.34202, asin(sin(phi)) = 0.349066
phi = 2.96706, sin(phi) = 0.173648, asin(sin(phi)) = 0.174533
phi = 3.14159, sin(phi) = 1.45473e-15, asin(sin(phi)) = 1.45473e-15
phi = 3.31613, sin(phi) = -0.173648, asin(sin(phi)) = -0.174533
phi = 3.49066, sin(phi) = -0.34202, asin(sin(phi)) = -0.349066
phi = 3.66519, sin(phi) = -0.5, asin(sin(phi)) = -0.523599
phi = 3.83972, sin(phi) = -0.642788, asin(sin(phi)) = -0.698132
phi = 4.01426, sin(phi) = -0.766044, asin(sin(phi)) = -0.872665
phi = 4.18879, sin(phi) = -0.866025, asin(sin(phi)) = -1.0472
phi = 4.36332, sin(phi) = -0.939693, asin(sin(phi)) = -1.22173
phi = 4.53786, sin(phi) = -0.984808, asin(sin(phi)) = -1.39626
phi = 4.71239, sin(phi) = -1, asin(sin(phi)) = -1.5708
phi = 4.88692, sin(phi) = -0.984808, asin(sin(phi)) = -1.39626
phi = 5.06145, sin(phi) = -0.939693, asin(sin(phi)) = -1.22173
phi = 5I`m doing something wrong. In a right triangle the hypotenuse length is 80.62 the triangle side length opposing the angle is 40. The windows calculator result for inverse sin 40/80.6225 is 29.74 When I do the math with asinf() I`m getting 0.519
-
I`m doing something wrong. In a right triangle the hypotenuse length is 80.62 the triangle side length opposing the angle is 40. The windows calculator result for inverse sin 40/80.6225 is 29.74 When I do the math with asinf() I`m getting 0.519
Post your code, then. The following program
#include
#include
using namespace std;int main()
{
double angle = asin( 40/80.6225 );
cout << "angle " << angle << " (" << (angle * 180 / M_PI) << " degrees)" << endl;
}Outputs
angle 0.519147 (29.7449 degrees)
-
Post your code, then. The following program
#include
#include
using namespace std;int main()
{
double angle = asin( 40/80.6225 );
cout << "angle " << angle << " (" << (angle * 180 / M_PI) << " degrees)" << endl;
}Outputs
angle 0.519147 (29.7449 degrees)
after conversion the result is as it should be , thanks
-
I`m doing something wrong. In a right triangle the hypotenuse length is 80.62 the triangle side length opposing the angle is 40. The windows calculator result for inverse sin 40/80.6225 is 29.74 When I do the math with asinf() I`m getting 0.519
You probably mix degrees with radians.
-
You probably mix degrees with radians.
Math is tricky
-
after conversion the result is as it should be , thanks
-
The documentation of asin should be just enoough:
'(it) Computes the principal value of the arc sine of arg'
That is you get the first quadrant angle correnspondig to the sin value passed as argument. The following program
#include #include using namespace std;
int main()
{
const size_t N = 18;
const double delta = M_PI/N;for ( double phi = 0; phi < 2*M_PI; phi += delta)
{
double s = sin(phi);
double a = asin(s);
cout << "phi = " << phi << ", sin(phi) = " << s << ", asin(sin(phi)) = " << a << "\n";
}
cout << endl;
}outputs
phi = 0, sin(phi) = 0, asin(sin(phi)) = 0
phi = 0.174533, sin(phi) = 0.173648, asin(sin(phi)) = 0.174533
phi = 0.349066, sin(phi) = 0.34202, asin(sin(phi)) = 0.349066
phi = 0.523599, sin(phi) = 0.5, asin(sin(phi)) = 0.523599
phi = 0.698132, sin(phi) = 0.642788, asin(sin(phi)) = 0.698132
phi = 0.872665, sin(phi) = 0.766044, asin(sin(phi)) = 0.872665
phi = 1.0472, sin(phi) = 0.866025, asin(sin(phi)) = 1.0472
phi = 1.22173, sin(phi) = 0.939693, asin(sin(phi)) = 1.22173
phi = 1.39626, sin(phi) = 0.984808, asin(sin(phi)) = 1.39626
phi = 1.5708, sin(phi) = 1, asin(sin(phi)) = 1.5708
phi = 1.74533, sin(phi) = 0.984808, asin(sin(phi)) = 1.39626
phi = 1.91986, sin(phi) = 0.939693, asin(sin(phi)) = 1.22173
phi = 2.0944, sin(phi) = 0.866025, asin(sin(phi)) = 1.0472
phi = 2.26893, sin(phi) = 0.766044, asin(sin(phi)) = 0.872665
phi = 2.44346, sin(phi) = 0.642788, asin(sin(phi)) = 0.698132
phi = 2.61799, sin(phi) = 0.5, asin(sin(phi)) = 0.523599
phi = 2.79253, sin(phi) = 0.34202, asin(sin(phi)) = 0.349066
phi = 2.96706, sin(phi) = 0.173648, asin(sin(phi)) = 0.174533
phi = 3.14159, sin(phi) = 1.45473e-15, asin(sin(phi)) = 1.45473e-15
phi = 3.31613, sin(phi) = -0.173648, asin(sin(phi)) = -0.174533
phi = 3.49066, sin(phi) = -0.34202, asin(sin(phi)) = -0.349066
phi = 3.66519, sin(phi) = -0.5, asin(sin(phi)) = -0.523599
phi = 3.83972, sin(phi) = -0.642788, asin(sin(phi)) = -0.698132
phi = 4.01426, sin(phi) = -0.766044, asin(sin(phi)) = -0.872665
phi = 4.18879, sin(phi) = -0.866025, asin(sin(phi)) = -1.0472
phi = 4.36332, sin(phi) = -0.939693, asin(sin(phi)) = -1.22173
phi = 4.53786, sin(phi) = -0.984808, asin(sin(phi)) = -1.39626
phi = 4.71239, sin(phi) = -1, asin(sin(phi)) = -1.5708
phi = 4.88692, sin(phi) = -0.984808, asin(sin(phi)) = -1.39626
phi = 5.06145, sin(phi) = -0.939693, asin(sin(phi)) = -1.22173
phi = 5I`m working on several things at the same time. Don`t go wandering if I`m active simultaneously in two threads.
Quote:
That is you get the first quadrant angle correnspondig to the sin value passed as argument.
What`s the formula when you want work with remaining quadrants? This formula doesn`t work always.
-
I`m working on several things at the same time. Don`t go wandering if I`m active simultaneously in two threads.
Quote:
That is you get the first quadrant angle correnspondig to the sin value passed as argument.
What`s the formula when you want work with remaining quadrants? This formula doesn`t work always.
-
Thanks CPallini
-
Thanks CPallini
-
I have a tough time finding the inverse sinus math function in c++. There is asinf() but I`m not sure about what it does. [fixed] Displaying a float in StringCchPrintfA
I have my object rotation algorithm working though it will only rotate 180 degrees atm. It`s an algorithm that handles object rotations without matrices.