sin / cos / tan / acos を処理しているときに、この奇妙な値を見た人はいますか?
===奇妙な価値===
-1.#IND00
=====================
void inverse_pos(double x, double y, double& theta_one, double& theta_two)
{
// Assume that L1 = 350 and L2 = 250
double B = sqrt(x*x + y*y);
double angle_beta = atan2(y, x);
double angle_alpha = acos((L2*L2 - B*B - L1*L1) / (-2*B*L1));
theta_one = angle_beta + angle_alpha;
theta_two = atan2((y-L1*sin(theta_one)), (x-L1*cos(theta_one)));
}
これは私が取り組んでいたコードです。
x & y が 10 & 10 のような特定の条件では、 このコードは -1.#IND00 を theta_one & theta_two に格納します。
文字にも数字にも見えません:(
間違いなく atan2 / acos / stuff が問題です。
しかし、問題は、それらの double 変数がいくつかの値を正常に格納したため、try と catch が機能しないことです。
さらに、次の計算はそれについて不平を言うことはなく、プログラムを壊すこともありません!
この値を何らかの形で強制的に使用して、プログラム全体をクラッシュさせることを考えています...このエラーをキャッチできるように..
その考えを除いて、 これらの theta_one および theta_two 変数がこのクレイジーな値を格納しているかどうかを確認する方法がわかりません。
良いアイデアはありますか?
前もって感謝します..