![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
タイトルの通りなのですが、
まさにその部分をプログラムで作っている最中です。
直線 : ax+by+c=0 で言うところの a,b,c のパラメータと
線分の2端点 ( x1 , y1 ) , ( x2 , y2 ) がわかっています。
その情報を使って今は
( ax1 + by1 + c ) * ( ax2 + by2 +c ) < 0
のときに交差している。
という風に処理しているんですが、 どうにもこの部分の処理で時間がかかっているみたいで、
なんとか高速化したいんですが、直線と線分の交差判定について触れてあるサイトが少なかったり、
今使っているアルゴリズムのサイトだったりしか見かけないので、どうにもこうにもなりません。
もしこれが最速のアルゴリズムならしかたないんですが、もし皆さんご存知でしたらお力添えをお願いします。
No.3ベストアンサー
- 回答日時:
No.1
- 回答日時:
> どうにもこの部分の処理で時間がかかっている
本当にそうですか?
5回のかけ算と4回の足し算が「時間がかかる」だとすれば、プログラムの他の部分は「ほとんどなにもしていない」って位でないと。(例えば、printf使ってたら、その方が何倍(下手すれば何十、何百、何万倍)も時間かかります)
実行環境によっては確かに遅いケースもあります(CPUが遅く、浮動小数点演算専用回路が付いていないマイコン等)
しかし、最近の普通のコンピュータなら、億単位の四則演算しても数秒もかかりません。
○本当はどこで時間かかっているのか、確認しましょう
○他の部分のアルゴリズムの見直しましょう
例えば、n個の点から、直線を交差する組み合わせを探す、というものだったら
「全ての組み合わせを選ぶ→判定式を計算」
としたら
「9(1回あたりの計算) * n(n-1)/2(組合せの数)」
回計算することになりますが
「全点の aX+bY+c を計算→全組み合わせで 左の値を使って判定式を計算」
とすれば
「4(1点あたりの計算) * n (点の数) + 1(組み合わせ1つあたりの計算) * n(n-1)/2」
と大幅に削減できます。(もっとも、点の数が万単位でもなければ実感できないですが)
この回答への補足
すみません。情報をだいぶはしょっていたので誤解を与えたかもしれません。
この直線の交差判定はかなり繰り返し計算するのでちょっとでも処理を軽くしたいという旨の相談です。
だいたい700~900個の点(画像中にある物体の輪郭を抽出した点)のうち隣接する点同士と直線の成分で交差判定をします。
それを、256*256回のループに加えてカメラ台数分の6回繰り返す処理なので
270000000回位です。億単位で繰り返し処理をします。
確かに点の位置には関係性があるのでその辺のアルゴリズムも考えてみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 数学直線の方程式とベクトル方程式について 直線の方程式で 点(x1,y1)を通り、直線ax+by+c 1 2022/08/12 12:13
- C言語・C++・C# ある線が円の範囲に入っているかの計算 1 2022/12/07 16:14
- 電気工事士 【理論】単相3線式で200Vの作り方について 5 2023/02/26 09:12
- 地図・道路 バイク 右折時に中央線に寄るタイミング 2 2022/08/28 10:27
- 憲法・法令通則 道交法についての質問です 3 2023/01/16 14:17
- 査定・売却・下取り(バイク) 片側に斜線道路にて。 右車線を後方からジムニーが走って自車を抜き、そのすぐ前にいた車両が通せんぼをし 2 2023/08/07 07:55
- その他(法律) 2車線以上であっても、歩行者は横断歩道がない道路を横断できますよね? 3 2022/04/19 15:58
- 電気・ガス・水道業 スイッチボックス内の電線確認 3 2022/11/20 10:03
- カスタマイズ(車) いわゆる「テレビキャンセラー」について・・・・・ 7 2022/11/01 20:57
- バイク免許・教習所 原付の二段階右折 二車線目が右折専用なのに違反っておかしくないですか? 6 2023/07/18 10:32
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 極座標変換
-
解像度と誤差について
-
生年月日(yyyy/MM/dd) → 年齢...
-
画像一致判定のアルゴリズム
-
角が丸部分を画像上から検出す...
-
直線と線分の交差判定について...
-
色混ぜのアルゴリズム
-
ノイズ処理の原理
-
Windows Media Playerを開くと...
-
String^の^自体が何を意味して...
-
Google ColaboでGUI作成
-
iCloudフォトライブラリ内の画...
-
【VC++】MFC、C++/CLI(CLR)、...
-
C言語を勉強するサイトを教えて...
-
eclipseで関数printfを解決でき...
-
unix-c と linux-c の違いは?
-
自宅でVCで開発をするとしたら・・
-
android参考書
-
Linux fopenについて!!
-
C言語で自動販売機のプログラ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
OpenCVで寸法測定
-
色混ぜのアルゴリズム
-
画像をFFTした際のスペクトル分...
-
生年月日(yyyy/MM/dd) → 年齢...
-
行列の積の処理を高速化したい
-
魚眼画像について
-
C言語 極座標変換
-
Canny法に用いる閾値の決定法に...
-
姿勢センサでプロジェクタの台...
-
VB BitmapをExcelに貼り付け 大...
-
画像の2値化について
-
C言語の作成依頼です。
-
直線と線分の交差判定について...
-
線幅の測定
-
[緊急] 添付画像にある,黒枠内...
-
リアルタイムで多数の3角形ポリ...
-
VBを使った自作の逆FFT
-
画像の拡大
-
量子コンピュータで四則演算
-
2枚の画像間の色ヒストグラム距...
おすすめ情報