空間ベクトルをのばす

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
はね

空間ベクトルをのばす

#1

投稿記事 by はね » 16年前

いつもお世話になっております。
基礎的なことだとは思いますが、詰まってしまって質問させてください。


三次元ベクトルABがあります。

ベクトルABをdだけ伸ばした先の点Cを求めるにはどうしたらいいのでしょうか?
ABCは直線上にあります。

図(?)を書くと以下のようになり、点Cを求めたいです。
A→B→→C 
     d
どうか教えて頂きたいです。
よろしくお願いします。

lbfuvab

Re:空間ベクトルをのばす

#2

投稿記事 by lbfuvab » 16年前

vec(AB)をAからBまでのベクトルとします。
vec(OC) = vec(OA) + 3*vec(AB)

vec(AB) = vec(OB) - vec(OA)

です。
後は頑張って下さい。

lbfuvab

Re:空間ベクトルをのばす

#3

投稿記事 by lbfuvab » 16年前

すいません。
d進んだ点でしたね。

vec(OC) = vec(OB) + d/abs(vec(AB))*vec(AB)

ですね。

Justy

Re:空間ベクトルをのばす

#4

投稿記事 by Justy » 16年前

[color=#d0b0c0" face="monospace]
>点Cを求めたいです
[/color]

 ベクトル ABの単位ベクトルを求めて、d倍し、点Bにそれを足せばいいんじゃないでしょうか。

lbfuvab

Re:空間ベクトルをのばす

#5

投稿記事 by lbfuvab » 16年前

う~ん我ながら計算順序が見づらい・・・
分かりやすく書くと、
vec(OC) = vec(OB) + ( d * abs(vec(AB)) ) * vec(AB)

ちなみにベクトルの絶対値はベクトルの長さです。

sizuma

Re:空間ベクトルをのばす

#6

投稿記事 by sizuma » 16年前

>vec(OC) = vec(OB) + ( d * abs(vec(AB)) ) * vec(AB)

えっと、こうじゃないですか??
d * (vec(AB) / abs(vec(AB))
つまりはJustyさんの

>ベクトル ABの単位ベクトルを求めて、d倍し、点Bにそれを足せばいいんじゃないでしょうか。

ってことですよね

はね

Re:空間ベクトルをのばす

#7

投稿記事 by はね » 16年前

lbfuvab様
Justy様
sizuma様
返事が遅くなり申し訳ありません。

早速実装してみました。
きちんとラインが引けていました。
(遅れましたが、計測ソフトのライン表示に使用するつもりでした。)

vecBCのノルム=dにもなっておりました。

ありがとうございました。
またよろしくお願い致します。

閉鎖

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