LoginSignup
1
0

More than 5 years have passed since last update.

直線(線分)の交点判定

Last updated at Posted at 2018-02-11

直線(線分)の交点判定をプログラムで求めてみます。

0.計算したいこと

二つの一次関数で描かれる直線(線分)が交差するか判定してみます。
y = 2x + 3
y = x + 9

1.Rubyで計算式をプログラムしてみる

プログラム名は、math02.rbとします。
交差したら、座標とともにtrueを表示します。

def f1(x)
     2 * x + 3
end

def f2(x)
     x + 9
end

puts "x,y1,y2,cross"
-10.upto(10) do |x|
    y1 = f1(x)
    y2 = f2(x)
    cross = ( y1 == y2 )
    puts "#{x},#{y1},#{y2}, #{cross}"
end

2.実行してみる

ruby math02.rb

3.結果

x,y1,y2,cross
-10,-17,-1, false
-9,-15,0, false
-8,-13,1, false
-7,-11,2, false
-6,-9,3, false
-5,-7,4, false
-4,-5,5, false
-3,-3,6, false
-2,-1,7, false
-1,1,8, false
0,3,9, false
1,5,10, false
2,7,11, false
3,9,12, false
4,11,13, false
5,13,14, false
6,15,15, true
7,17,16, false
8,19,17, false
9,21,18, false
10,23,19, false

どうやら、x=6で2つの直線(線分)は交差するようです。

4.表計算ソフトで確認してみる

計算結果をファイルに保存します。

ruby math02.rb > math02.csv

エクセルかLibreOfficeを呼び出して、ファイルに保存した結果を開きます。ファイルの種類をテキストファイルやCSVに切り替えないとうまく見つけられないかも知れません。結果の値をカンマ(,)で区切ったので、表計算ソフトで開くときも区切りにカンマ(コンマ)を指定しないと、うまくxとyの値が分かれてくれないので注意します。エクセルはファイルをダブルクリックして開くだけでうまく分けてくれるハズです。

表計算ソフトでうまく値が表示されたら、2行目以降のxとy1,y2の値の部分だけを範囲選択します。

エクセルの場合は、メニューの挿入から、散布図(直線)か散布図(平滑線)を選択します。
LibreOffceの場合は、メニューのグラフボタンでグラフウィザードを開いて、散布図の線のみを選択して、種類で直線か平滑化曲線を選択して完了ボタンをクリックします。

ちょっとわかりにくいかも知れませんが、x=6の時、交差する2本の線分が表示されます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0