点が線(折れ線)の左右にあるか判別

点が線の左右にあるか判別したいです。
ただの直線の場合は外積の関係を使うのはわかりますが、図のような折れ線になるとどのようにしたらよいかわかりません。
aa.jpg
TEN =[
450.0000 0
437.5000 40.0000
425.0000 80.0000
412.5000 120.0000
400.0000 160.0000
371.6090 129.1747
359.1090 169.1747
387.5000 200.0000
428.3910 190.8253
440.8910 150.8253
400.0000 0
500.0000 0
383.5000 31.5000
383.5000 63.5000
383.5000 95.5000
447.5000 63.5000
447.5000 95.5000
479.5000 31.5000];
ORESEN= [
410 0
390 120
430 180
];
plot(TEN(:,1),TEN(:,2),'*')
hold on
plot(ORESEN(:,1),ORESEN(:,2))

3 Comments

Kenta
Kenta on 29 Sep 2019
状況にもよりますが、折れ線の交点(真ん中の点)がわかるなら2本の線をかなり長くして、
それで作った三角形の内側なら、この図でいう右側、その逆も同様に判別できそうです。
三角形の内側にあれば、その点からの外積の(回転)方向は一致するということを利用します。
また、線を両方向に伸ばしてそれぞれの線の左右で4通りになるので丁寧に場合分けし、質問者様のおっしゃるように実行してもできそうです。ただ、どのような方法がよいかは、上の状況がどのように作り出されるのかにもよると思います。
Akira Agata
Akira Agata on 29 Sep 2019
あるいは、交点が複数あるような複雑な折れ線の場合、折れ線の両端を延長して多角形領域を作成して、inpolygon関数を使って対象の点がどちらの多角形領域内にあるかを判別する、というのはいかがでしょうか?
koba
koba on 30 Sep 2019
inpolygonの関数を使ったら解決しました。 お返事ありがとうございました。

Sign in to comment.

Answers (0)

Categories

Products

Release

R2019a

Tags

Asked:

on 29 Sep 2019

Commented:

on 30 Sep 2019

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!