二つのベクトルのなす角度

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
早苗明紗
記事: 9
登録日時: 11年前
連絡を取る:

二つのベクトルのなす角度

#1

投稿記事 by 早苗明紗 » 11年前

いつもお世話になっております。

今回、教えていただきたいのは二つのベクトルのなす角度に関してです。
内積の公式から、cosθ = a・b/|a||b|として角度を求めています。
しかし、ベクトルaとベクトルbが同じものであるにもかかわらず数回に一回ぐらい
cosθの値が0.999998となってしまいます。
プログラムは以下のようになっていますが、どうしてこのようなことが起こるのでしょうか?
VC++2010EE, DXライブラリ利用

コード:

VECTOR Base, Vec;
float Angle;
Angle = VDot(Base,Vec)/(VSize(Base)*VSize(Vec));
上記コードはベクトルを求める計算部分は省略していますが
BaseおよびVecを求めるプログラムはまったく同じものであり、与えられる変数も同じものにしています。

よろしくお願いします

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

Re: 二つのベクトルのなす角度

#2

投稿記事 by h2so5 » 11年前

浮動小数点数の計算誤差が原因です。

早苗明紗
記事: 9
登録日時: 11年前
連絡を取る:

Re: 二つのベクトルのなす角度

#3

投稿記事 by 早苗明紗 » 11年前

ありがとうございます。
原因とそうなる理由が理解できました

閉鎖

“C言語何でも質問掲示板” へ戻る