ここから本文です

C言語の事で質問します。線分の当たり判定って言うのをまとめて来週に発表しなけれ...

epz********さん

2020/7/720:10:08

C言語の事で質問します。線分の当たり判定って言うのをまとめて来週に発表しなければいけませんのですけど、調べたのですがよく分かりませんでした。どなたか出来るだけ分かりやすく解説できる

方いませんか?私はC言語を習い始めたばかりなので何を言っているか調べても分かりませんでした....よろしくお願いします。

閲覧数:
42
回答数:
3

違反報告

回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

ter********さん

2020/7/814:05:19

2線分の交差が有るか無いかを、判定することです。

色々な方法がありますが、下記(※)には、外積を使った説明が載っています。
ただし、線分の2端点が同一(長さ0の線分、点)の場合については考えていません。


https://yttm-work.jp/collision/collision_0011.html


2線分の位置関係が、下記を満たす場合を「交差がある」と判定しています。

『片方の線分の始点と終点が、もう片方の線分をまたいだ位置にある』


2線分の位置関係が、互いに離れている場合だけでなく、次の場合も「交差が無い」と判定されています。これについては、個々のニーズごとに、仕様は変わってくるでしょう。

・2線分が、T字形に接触している
・2線分が、L字形に接触している
・2線分が、1つの共通端点を持ち、互いに重ならず、1直線状に並んでいる
・2線分が1直線上に並び、かつ一部分が重なっている
・2線分が、まったく重なっている(2つの共通端点を持つ)
・2線分が1直線上に並び、かつ一方が、もう一方を包含している



また、外積計算結果の正負判定式「外積値>= 0.0」は、数学的に考える分には問題ありませんが、プログラムで計算する場合、値は浮動小数点なので、このままでは「外積値ゼロ」の判定があいまいです。
プログラミング時は、誤差判定の組み込みが必要です。


※.このURLでは、外積の計算式は、最初の解説部分にはありません。
「■実装方法■」欄に、プログラミング言語を使ったコーディングが、突然に現れています。

これだけだと、

>私はC言語を習い始めたばかりなので

ということなので、

>何を言っているか調べても分かりませんでした....

に該当するかもしれません。


下記URLの方が、わかりやすいでしょう。

http://www.deqnotes.net/acmicpc/2d_geometry/products

そこに書かれている「a×b=(ax・by-ay・bx)」の説明図を添付図に示します。
赤い線分と青い線分の交差有無判定のため、点RがベクトルAに対して、時計回り側にあるか、反時計回り側にあるかを調べる、外積計算の式を示します。
Bベクトルは、点Pから点Rへのベクトルです。

交差有無判定のためには、点Pから点Sへ向かうCベクトルも、Aベクトルとの外積を計算します。


添付図

2線分の交差が有るか無いかを、判定することです。...

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

2020/7/721:09:32

https://qiita.com/zu_rin/items/e04fdec4e3dec6072104
調べる前にググったらすぐに出てきました。

  • 質問者

    epz********さん

    2020/7/722:54:10

    返信ありがとうございます。ちょっと見てみます。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

umi********さん

2020/7/720:17:39

>私はC言語を習い始めたばかりなので
>何を言っているか調べても分かりませんでした

必要なのはC言語の知識ではありません。
線形代数の知識です。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる