コピー2022.12.05こんにちは、ヒガシです。このページではPythonを使って、以下の画像に示すように平面上にある2直線の交点座標を算出する方法をご紹介していきます。あなたがやることは各直線を構成する4点a,b,c,dのX,Y座標を指定するだけでOKです。それではさっそくやっていきましょう!スポンサーリンク目次2直線の交点座標を算出する方法の解説2直線を構成する4点の座標を指定する2直線の交点を算出するサンプルコードサンプルコードの実行結果確認おわりに2直線の交点座標を算出する方法の解説まずはどうやって2直線の交点を算出するか説明していきます。やることはいたってシンプルです。以下の画像に示すように2つの直線上それぞれに点P,Qを適当に取り、その2点を結ぶ線分PQの長さを計測します。この作業をP,Qの位置を網羅的に変更しながら実施し、線分PQの長さが最小になるP,Qの座標を探索していきます。※うまく計算できれば最終的にP,Qの座標は一致することになります。手計算でやればもっと数学的に説くことは可能ですが、コンピューターはそういった計算は得意ではないので、上記で説明したような探索的な計算で解いていきます。この作業をプログラミング言語「Python」を使って実行していきます。スポンサーリンク2直線を構成する4点の座標を指定する交点を計算する上で、まずは2つの直線がなければ話になりません。いうわけでまずは2つの直線を構成する4点の座標を指定してあげましょう。今回は以下のように指定してあげました。a=[1,2]b=[4,8]c=[1,7]d=[7,2]エクセルでグラフを書くとこんな感じですね。Y=5~6の間にありますね。以降では、この交点の詳細座標を探索的に計算していきます。スポンサーリンク2直線の交点を算出するサンプルコードそれでは前置きはこのくらいにして、先ほど指定して2直線の交点を求めるプログラムを書いていきましょう。以下がそのコードです。Ppos,Qpos=calc_pos(st[min_index][0],st[min_index][1])print('Ppos=')print(Ppos)print('Qpos=')print(Qpos)print('mean_pos=')print((Qpos+Ppos)/2)先ほども説明した通り、今回は探索的に交点座標を求めていきます。そのため探索範囲はあらかじめ指定しておく必要があります。それを行っているのが、42,43行目です。(ini_max、ini_min)もしこの指定範囲内に解がなければ正しい値を求めることはできませんのでなるべく広範囲を指定しておく必要があります。広範囲すぎると探索が粗くなりますので9行目の探索の細かさ(delta)を大きくするか探索回数(num_search)を大きくする必要がでてきます。これらの数値は大きくすればするほど計算時間はかかってしまいますのでその点はご注意ください。スポンサーリンクサンプルコードの実行結果確認それでは先ほどのサンプルコードを実行してみましょう。いざ、実行!!!※少し時間がかかります。計算が終わると以下の結果が算出されました。これが探索に使った点P、点Qの座標、およびその中心座標です。冒頭に説明した通り、今回はそれぞれの線上をP,Qという2点を動かしながら探索していきます。最終的に交点座標にたどり着いた場合、P,Qの座標は一致しているはずです。一致していなければ探索がうまくいっていないので、先ほど紹介したパラメータを調整して再度計算してみることをオススメします。今回は問題なくグラフの交点付近を算出できていそうですね。スポンサーリンクおわりにというわけで今回はpythonを使って、平面上にある2直線の交点座標を算出する方法をご紹介しました。空間設計の際などにぜひご活用ください。仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。⇒興味をもった方は【ヒガサラ】で検索してみてください。確実にスキルアップできるはずです。最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。コピーヒガシをフォローするスポンサーリンクヒガシヒガサラblogスポンサーリンクpython【AI】MLPモデルの重み、バイアスをcsvファイルに出力する方法!こんにちは、ヒガシです。Perceptron)モデルから重みとバイアスを取得し、それらをcsvファイルに出力する方法をご紹介していきます。Python...python【Python-openCV】動画内の指定箇所に別動画を挿入する方法!こんにちは、ヒガシです。こんな感じでサイズを変えて指定箇所に挿入する方法...python【Python-openCV】動画内物体の重心位置履歴を取得する方法!こんにちは、ヒガシです。こんな感じでグラフ化してみようと思います。...python【Python応用】mp4動画に任意の縁付き字幕を挿入する方法!こんにちは、ヒガシです。こんな感じで任意の字幕を挿入する方法をご紹介します。※上の動画は閲覧上の手間を省くためにgif形式にし...python【Python基礎】スペース区切りの文字列を各単語に分解する方法このページでは、Pythonを使って指定した文字列を各単語に分解する方法をご紹介していきます。いうリストに変換していきます。あなた...python【OpenCV】輝度分布テキストデータから画像を作成する方法!画像というのは画素ごとの数値の集まりです。この記事では、数値の行列から白黒画像を作成する方法をpythontとopenCVを使って実演しています。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。ご指摘ありがとうございます。修正させていただきましました。【python-openCV】背景画像に別の画像を合成する方法!やぎ2023.05.29こんにちは。書く必要があると思います。【python-openCV】背景画像に別の画像を合成する方法!サトシ2023.05.11承知しました。アドバイス本当にありがとうございます。【VBA】大量のファイル名変更!指定したフォルダ内を一括操作!ヒガシ2023.05.11/はフォルダの階層が変わることを意味しますので使えません。substitute関数などを使って別文字に変換してから実行すると良いと思います。【VBA】大量のファイル名変更!指定したフォルダ内を一括操作!サトシ2023.05.10何度もすみません。/を使うと出来ないみたいです。2001-001-1/4とかにしたいのですが、ファイルが見つかりませんとかパスが無効ですとなります。検索タイトルとURLをコピーしました。