• ベストアンサー

二点の座標から距離や角度を求めたいのですが、Matlab

こんにちは、Matlabの初心者ですがよろしくお願いします。 ある座標、たとえば、A(x1, y1) B(x2, y2)があったとして、 この二点間の距離は、 sqrt((x2-x1)^2 + (y2-y1)^2) だと思いますが、もっと簡潔に求めることができる関数とかが導入されていたりしないかと思いました。AやBを定義しておいて、AとBだけを使うことができないかと思いました。 また、この二点を通る直線とX軸とがなす角度は、 atan(sqrt((y2-y1)^2)/sqrt((y2-y1)^2)) で求められるかと思いますが、これも同様にもっと簡潔な方法がないかと思いました。 いかがでしょうか。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

# Mathlabに関しては知識がありません m(__)m 距離に関しては一般的にはそのsqrtでやる式でしょう X軸との角度についてはお示しの式では求まりません atanの引数が常に1になってしまいます たぶん分母が sqrt((x2-x1)^2) としたかったのでしょうが この場合の sqrtは必要ないと思います なぜなら (x2-x1)の2乗の平方根とはつまり(x2-x1)と等価になります # 符号は考慮する必要があるでしょうが Mathlabにatan2といった組み込み関数があるならこちらを使ったほうがいいように思います atanですと除算が入るため 0除算の例外を自前で処理しないといけません atan2ですとその点を考慮した値を戻します ただしatan2の取りうる値域が -90から90といった場合もあるので 360度に拡張するのでしたら引数に与える垂直/水平成分の符号を加味して加減算してください

その他の回答 (1)

  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.2

# ちょっと検索したくらいで、Matlabの知識はほとんどありません。 二点間のユークリッド距離を求めるなら、 hypot や pdist が使えると思います。 角度計算は No.1 の通りatan2がより適切でしょう。

関連するQ&A

  • 三次元座標の回転角度

    左手系三次元座標A(X,Y,Z)がB(x,y,z)に移動したとき、原点からみたZ軸の回転角度Θの算出は、 Θ=Atan(y/x)-Atan(Y/X) でいいですか。よろしくお願いします。

  • 2点間の距離で困っています

    ご教授お願い致します 点a(x1,y1,z1)と点b(x2,y2,z2)があります この2点を結ぶ直線の長さはab=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2)) で求まります ここからが質問です、例えばabの長さが100.5と出たとき点aは固定してabのベクトル上で100.0の点cのx,y,zの座標を求めるにはどの様な公式を使えばよろしいでしょうか?

  • 3次元での回転による座標変換

    3次元での回転による座標変換に関して質問があります. X軸,Y軸,Z軸の直交座標系があるとします. この座標系において,ある位置ベクトル(a1,b1,c1)がX軸,Y軸,Z軸と成す角度は,θx,θy,θzは,ベクトルの内積から算出可能だと思います. θx=a1/sqrt(a1^2+b1^2+c1^2) θy=b1/sqrt(a1^2+b1^2+c1^2) θz=c1/sqrt(a1^2+b1^2+c1^2) X,Y,Zの直交座標系を回転させて,この位置ベクトルの向きを基準としたX'軸,Y'軸,Z'軸による新しい直交座標系を設定するには,どのようにすればよいでしょうか? θx,θy,θzと各軸での回転角度は違うものという認識でいいのでしょうか? 元の座標系において,各軸回りに順番に回転させればいいかと思うのですが,どうもイメージがつかみきれません. よろしくお願い致します.

  • 直線上にある点の座標の求め方

    お世話になります。 点a(x1,y1)と点b(x2,y2)の直線上に点cを設けるとします。 設けた点cの座標を求めるプログラムをVBで作りたいのですが宜しくお願いします。 入力データは、点a(x1,y1)と点b(x2,y2)の座標と点aから点cの距離(k)を入力すると点cのx,yの座標を返すようなプログラムを考えています。 どうか宜しくお願いします。

  • エクセルで回転する座標の出し方

    エクセルで回転する座標の出し方 (例) 座標X100、Y100の点から好きな角度を回したときのX、Yの座標の求め方 回転中心はX0、Y0 回転方向は反時計回り 例で言えば X141.421、Y0  が0度       X0、Y141.421  が90度       X-141.421、Y0 が180度       X0、Y-141.421 が270度 エクセルでの問題点は 1.角度計算がラジアンになる デグリも関数はあるけど書式がわからない  無理やり(PI()/180)などを使ってるがアークタンジェントでは書式がわからない 2.正と負の計算式・答えが負になるときの処理ができない  回転角度が270度とか 今電卓で打っているのは 100/100=ATAN ----------------------最初の角度 100*100+100*100の答えのルート--------回転中心からの直線距離 最初の角度+動かしたい角度------------求めたい座標の角度 SIN求めたい座標の角度*直線距離-------Y座標 答え COS求めたい座標の角度*直線距離-------X座標 答え 最初のX、Y座標と 動かしたい角度を入れると答えが出るような 物が作りたいです よろしくお願いします エクセル2000 WINXP

  • 二点の座標から角度を求めるには?

    2点の座標A,Bの角度を求めたいのですが,たとえばA点(0,0)とB点(4,3)を結ぶラインは、底辺Bxと高さByを元に三角関数?から30度と求められますが、B点がマイナス座標が絡んできた場合などの90度から359度までをどう求めていいか悩んでいます。また、A点も(0,0)に限定されるわけではないので、ますます混乱しています。どう考えればよいのか教えていただきたいのですが (水平はX軸プラス方向が0度です)

  • 数学の質問です(点Qの座標を求めよ)

    数学の質問です。 図のように直線 l ,m があり、直線mは1次関数y=-X+5のグラフである。 直線 l と直線 m、X軸との交点をそれぞれA,Bとし、直線 mとX軸との交点をCとする。 また、点BのX座標は-4で、直線l とy軸との交点のy座標は2である。 このとき、次の問いに答えよ。 y軸上に点Qをとり、△ABC=△AQCとなるようにする。このときの点Qの座標を求めよ。 ただし、点Qのy座標は負とする。 という問題です。 考え方、方法がわからないので、わかりやすく教えていただけないでしょうか。 宜しくお願いします。

  • 2点からの距離が等しい点の座標の式

    以下の例題について教えてください 例題1 2点A(1,-3)B3,2)から等距離にあって、しかも直線y=2x上にある点Pの座標を求めよ 直線y=2x上にある点Pの座標は(t,2t)とおける 点Pは2点A,Bから等距離→AP=BP これをAP二乗(以後^2)AB~2としてtについての方程式を解く 求める点Pの座標は点Pが直線y=2x上にあるから(t,2t)とおける AP=BPからAP^2=AB^2よって(t-1)^2+{2t-(-3)}^2=(t-3)^2+(2t-2)^2右辺左辺をそれぞれ展開して整理すると5t^2+10t+10=5t-14t+13ゆえに24t=3したがってt=1/8答えP=(1/8,1/4) ここまではなんとか理解できました 例題2 2点A(-1,-2)(2,3)から等距離にあるy軸上の点Pの座標を求めよ 求める点Pの座標は点Pがy軸上にあるから(o,a)とおける PA=PBPA^2=PB^2よって(-1-0)^2+(-2-a)2=(2-0)(3-a)^2 1+4+4a+a^2=4+9-6a+a^2 整理すると10a-=0 ゆえにa=4/5 したがってP(0,4/5) この問題の疑問点ですが例題1と2の方程式のt,2tと0aの位置が違うのはなぜですか? 単にどちらでもいいのですか?

  • 楕円計算で困っています

    長径2a、短径2bの楕円があり、長軸と短軸の交点座標(いわゆる中心点)を(0,0)とする この中心点からx軸からの角度αで直線を引き、楕円との交点座標を(x1,y1)とし、 また、この座標がx軸に対して対称な座標を(x1,-y1)とする この2点に対して楕円の接線を引いて、2つの線の角度をβとする この条件で(x1,y1)座標と角度βを、a,b,角度αを用いて表現する方法はないでしょうか? 色々考えてみたのですがどうも上手くいきません。 どうかよろしくお願いします。

  • 二点の座標から直線の方程式を求める方法

    こんばんは、タイトルの通りなのですが、二点の座標から直線の方程式を求める方法がイマイチ理解できず困っています。 ax+b=yを変形して求めたほうが楽だとは思うのですが、プログラムに組み込むために座標から直接、直線の方程式を求めたいのです。 2つの点の座標から 直接ax+by+c=0を作りたいのですが、a,b,cを求める式は以下の式で合っているでしょうか・・・? a = (y0-y1) b = -(x0-x1) c = -{(y0-y1)*x1 + (x0-x1)*y1)}

専門家に質問してみよう