プロが教える店舗&オフィスのセキュリティ対策術

直線が四角形内または、直線が四角形を突き抜けている?か判定をして、
直線がどれくらい四角形内にあるか求めたいです。

ご教示お願い致します。

質問者からの補足コメント

  • 補足します。

    直線については、
    水平線、垂直線のみです。斜線は無しとします。
    LineGeometryで管理してるので座標は始点および終点のXとY座標を必要とします。
    ※座標はテキストデータから読み込む形式としています。

    四角形については、基本正方形としてます。
    こちらは、始点XとYで座標を管理しています。
    ※Rectangle構造体を使用しています。

    どのくらい四角形にあったら ですが、
    直線が四角形内を通過あるいは直線が四角形内に収まっていた場合、四角形内にある分だけの線の長さを知りたいという感じです。

    補足になっていれば良いのですが…(-_-;)

    No.1の回答に寄せられた補足コメントです。 補足日時:2020/01/11 16:26

A 回答 (3件)

> LineGeometryで管理してるので座標は始点および終点のXとY座標を必要とします。



始点、終点があるなら、直線でなくて線分ですね。

> 水平線、垂直線のみです。

であれば、場合分けなんかで割と簡単では。

  ━━━━━━━━
    ┏━━┓
  ━━━━━━━━
    ┃  ┃
    ┗━━┛
  ━━━━━━━━

線分のy座標が、矩形の始点と終点のy座標に挟まれているかどうか?
y座標の範囲外なら交わらない。
挟まれているなら、↓

    ┏━━━━━┓
   ━━━━━━━━━
 ━━ ┃     ┃
  ━━━━    ┃
    ┃     ┃ ━━━
    ┗━━━━━┛

線分の始点と終点のx座標と、矩形のx座標を比較。
線分の終点のx座標<矩形の始点のx座標なら、線分は矩形の左側の外側で交わらない。
矩形の終点のx座標<線分の始点のx座標なら、線分は矩形の右側の外側で交わらない。
そうでなければ、いずれかの形で交わるので、↓

仮に、切り取られる線分の始点のx座標と終点のx座標を、線分の始点、終点のx座標としておく。
線分の始点のx座標<矩形の始点のx座標なら、矩形の左側と交差。切り取られる線分の始点のx座標<-矩形の始点のx座標とする。
矩形の終点のx座標<線分の終点のx座標なら、矩形の右側と交差。切り取られる線分の終点のx座標<-矩形の終点のx座標とする。
切り取られる長さは、切り取られる線分の始点のx座標と終点のx座標で計算。

とか。
    • good
    • 0

C#っていうよりも、数学の問題では?

    • good
    • 0

直線、四角形がどういう風に定義されているか?によります。



・直線や四角形は画面のxy座標で垂直、水平線のみ?
・直線は2点を通るのならx1,y1,x2,y2の4つの数値で定義だし、y=ax+bの式なら2つの数値とか、水平、垂直線のみなら水平か?垂直かのフラグとxないしy座標とか。


> 直線がどれくらい四角形内にあるか

どれくらい四角形の中にあったら、どれくらいって表すの?
それとも、四角形が切り取る長さを知りたい?
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!