コピー2022.12.04こんにちは、ヒガシです。このページでは以下の画像に示すように平面上にある2直線の交点座標を算出する方法をご紹介していきます。あなたがやることは各直線を構成する4点a,b,c,dのX,Y座標を指定するだけでOKです。それではさっそくやっていきましょう!スポンサーリンク目次2直線の交点座標を算出する方法の解説VBAの実行環境を構築しておく2直線を構成する4点の座標を指定する2直線の交点を算出するサンプルコードサンプルコードの実行結果確認おわりに2直線の交点座標を算出する方法の解説まずはどうやって2直線の交点を算出するか説明していきます。やることはいたってシンプルです。以下の画像に示すように2つの直線上それぞれに点P,Qを適当に取り、その2点を結ぶ線分PQの長さを計測します。この作業をP,Qの位置を網羅的に変更しながら実施し、線分PQの長さが最小になるP,Qの座標を探索していきます。※うまく計算できれば最終的にP,Qの座標は一致することになります。手計算でやればもっと数学的に説くことは可能ですが、コンピューターはそういった計算は得意ではないので、上記で説明したような探索的な計算で解いていきます。スポンサーリンクVBAの実行環境を構築しておく実際の作業に入る前に、今回はVBAを使って計算していきます。VBAを使ったことがない、という方は以下を参考に実行環境を整えておきましょう。エクセルマクロ(VBA)の始め方!初心者向けに画像を使って詳細解説スポンサーリンク2直線を構成する4点の座標を指定する交点を計算する上で、まずは2つの直線がなければ話になりません。いうわけでまずは2つの直線を構成する4点の座標を指定してあげましょう。今回は以下のようにエクセル上に記述しました。※グラフは作ってなくてもOKです。以降のプログラムは上の画像と同じセルにa,b,c,dの座標情報があることを前提に書いています。セルの位置を変更すると以降のプログラムは機能しませんのでご注意ください。計算の過程でその他のセルも使用します。新規シート上で実行するようにしてください。スポンサーリンク2直線の交点を算出するサンプルコードそれでは前置きはこのくらいにして、先ほど指定して2直線の交点を求めるプログラムを書いていきましょう。以下がそのコードです。Function先ほども説明した通り、今回は探索的に交点座標を求めていきます。そのため探索範囲はあらかじめ指定しておく必要があります。それを行っているのが、7,8行目です。(sea_max、sea_min)もしこの指定範囲内に解がなければ正しい値を求めることはできませんのでなるべく広範囲を指定しておく必要があります。広範囲すぎると探索が粗くなりますので9行目の探索の細かさ(sea_delta)を大きくするか探索回数(num_search)を大きくする必要がでてきます。これらの数値は大きくすればするほど計算時間はかかってしまいますのでその点はご注意ください。スポンサーリンクサンプルコードの実行結果確認それでは先ほどのサンプルコードを実行してみましょう。いざ、実行!!!※少し時間がかかります。計算が終わると以下の結果が算出されました。G8,H8セルに記入されている情報が今回求めたい2直線のX,Y座標になります。右側のグラフと照らし合わせてみても、目視でわかる交点座標を付近をしてしていることがわかると思います。G5セルには交点を求める際に線分PQの長さを出力しています。探索的に求める手法ですので、完璧に0ではないですが、問題なくほぼ0になっていますね。いうわけで問題なく交点座標を算出できていそうですね。スポンサーリンクおわりにというわけで今回は、エクセルVBAをつかって平面上にある2直線の交点座標を算出する方法をご紹介しました。設計の際などにぜひご活用ください。※あくまでも自己責任でお願いします。このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。⇒興味をもった方は【ヒガサラ】で検索してみてください。確実にスキルアップできるはずです。最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。コピーヒガシをフォローするスポンサーリンクヒガシヒガサラblogスポンサーリンクエクセルVBA【エクセルVBA】グラフを自動作成⇒グラフ名を変更する方法!この記事では、VBAでグラフを自動作成する方法をご紹介しています。これができれば、日々の業務効率は劇的に改善するはずです。ご活用ください!エクセルVBA【VBA】条件にあてはまる列を一括削除!サンプルデータを使って実演!この記事では、データがまとまった表に対して、指定した条件にあてはまる列を一括削除していく方法をご紹介していきます。停止を判断できるようにする方法!vbyesnoスキルを使いこなそう!エクセルVBA【VBA】テキストファイルを指定した行だけ書き換える方法!Ver.1編集前データもそのままこの記事では、エクセルVBAを使ってテキストファイルの指定した行を任意の内容に書き換える方法をご紹介していきます。同じような内容を2回にわたってご紹介していきます。第1回目の今回は、テキストファイルの編集前後...エクセルVBA【エクセルVBA】3D等高線グラフをシート上で回転アニメーション化する方法!この記事では、以下の動画のように既存の3D等高線グラフの視野を回転させながらアニメーションにする方法をご紹介していきます。基本的には記事中のコードをコピーするだけでOKです。※そもそも...エクセルVBA【エクセルVBA】シート上にある図形を一括グループ化する方法!このページではVBAを使って、エクセルシート上にある複数の図形を自動でグループ化する方法をご紹介していきます。シンプルな図形だけでなく、グラフなんかが混ざっていても対応可能です。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。ご指摘ありがとうございます。修正させていただきましました。【python-openCV】背景画像に別の画像を合成する方法!やぎ2023.05.29こんにちは。書く必要があると思います。【python-openCV】背景画像に別の画像を合成する方法!サトシ2023.05.11承知しました。アドバイス本当にありがとうございます。【VBA】大量のファイル名変更!指定したフォルダ内を一括操作!ヒガシ2023.05.11/はフォルダの階層が変わることを意味しますので使えません。substitute関数などを使って別文字に変換してから実行すると良いと思います。【VBA】大量のファイル名変更!指定したフォルダ内を一括操作!サトシ2023.05.10何度もすみません。/を使うと出来ないみたいです。2001-001-1/4とかにしたいのですが、ファイルが見つかりませんとかパスが無効ですとなります。検索タイトルとURLをコピーしました。