1

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 変数がこのクレイジーな値を格納しているかどうかを確認する方法がわかりません。

良いアイデアはありますか?

前もって感謝します..

4

1 に答える 1

10
于 2010-03-25T08:24:29.967 に答える