「これはヤバかったな」という遅刻エピソード

私がやろうとしていることは、MATLABの画像処理で、2本の直線のそれぞれの垂線の交点の座標を求めることです。
具体的には、三つの点P1,P2,P3について、P1P2間に直線を引き、その中点から垂線をおろします。P2P3間でも同様の処理をし、
その垂線同士の座標を求めたいです。

現在途中までプログラムを作ったのですが、直線の法線方向の単位ベクトルと中点を求め、そこから垂線を引く。から先ががどうしても分かりません。
どなたか具体的な方法を教えてください。
また、法線方向の単位ベクトルと中点から垂線を引くことができなければ、違う解決策を教えて頂きたいです。

以下が作成途中のプログラムです。

% 読み込む画像ネーム
name='Picture 74';
pt=10; %データポイント

% イメージ作成
image = imread(strcat(name,'.jpg'));

a1=270;
b1=166;
a2=97;
b2=260;
a3=140;
b3=421;

%手動で座標を読み取り、Mファイルを作成
save(strcat(name,'.mat'),'a1','b1','a2','b2','a3','b3')





%画像の3点の座標読み込み
load('Picture 74.mat');

p1=[a1,b1];
p2=[a2,b2];
p3=[a3,b3];


%中点を求める(n1,m1) (n2,m2)
n1 = (a1 + a2)/2;
m1 = (b1 + b2)/2;
n2 = (a2 + a3)/2;
m2 = (b2 + b3)/2;


%垂線を求める

%s1*x+t1*y+u1=0;
%直線の方程式より、係数 s1,t1,u1 以下のようになる、

s1=b2-b1;
t1=a2-a1;
u1=-(s1*a2+t1*b2);


%P1P2間の距離
L1=sqrt((a1-a2)^2+(b1-b2)^2);

%直線の単位ベクトル(ex,ey)を求める
ex=(a2-a1)/L1;
ey=(b2-b1)/L1;

%直線の法線ベクトル(vx,vy)を求める
vx=ey;
vy=-ex;


質問に答えてくださる方、どうかよろしくお願い致します。

A 回答 (2件)

あ, 間違えた. 「垂線の交点」って書いてあるから「垂心」だと勘違いした.


そもそも「垂線」ってたくさんあるから「垂線の交点」もたくさんあってどれか決まらない.
プログラムでは「垂直二等分線の交点」を求めてるように見えるけど, もしそうなら外心だ.

参考URL:http://robotics.me.es.osaka-u.ac.jp/~masutani/Jo …
    • good
    • 0
この回答へのお礼

質問があいまいだったようですみません。

垂直二等分線の交点を求めたかったです。
指摘の通り、三点の外心になっていますね。

解決できそうです。

ありがとうございました!

お礼日時:2011/01/13 19:23

文章中「その垂線同士の座標を求めたいです。

」というのは「垂線の交点の座標を求める」でいい?

参考URL:http://ja.wikipedia.org/wiki/%E5%9E%82%E5%BF%83
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報