Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


21181 / 76732 ←次へ | 前へ→

【60953】Re:交点の判定
発言  n  - 09/3/26(木) 21:22 -

引用なし
パスワード
   グラフの座標ではなく、元データから算出すれば良いのですよね?
>2つの線分ABと線分CDが交差するか判定...
折れ線グラフの場合は、オーソドックスに考えると、y値について
AとCを比較した時の大小比較<>と
BとDを比較した時の大小比較<>で
関係が逆転したら交差するという判定で良いのではないでしょうか。

交点の算出は連立方程式の話なので数学の範疇のような気もしますが、
昔書いた事がありましたので、単純な例として挙げておきます。

Sub test()
  Dim flg As Boolean
  Dim a, b, c, d
  Dim z

  '{x値,y値}
  a = [{1,1}]
  b = [{2,3}]
  c = [{1,2}]
  d = [{2,2}]

  If a(2) > c(2) Then
    If b(2) < d(2) Then
      flg = True
    End If
  ElseIf a(2) < c(2) Then
    If b(2) > d(2) Then
      flg = True
    End If
  End If
  MsgBox "交差は " & flg
  If flg Then
    z = fKOUSA(a(1), a(2), _
          b(1), b(2), _
          c(1), c(2), _
          d(1), d(2))
    MsgBox "交点は x= " & z(1) & " y= " & z(2)
  End If
End Sub

Private Function fKOUSA(ByVal Ax As Double, ByVal Ay As Double, _
            ByVal Bx As Double, ByVal By As Double, _
            ByVal Cx As Double, ByVal Cy As Double, _
            ByVal Dx As Double, ByVal Dy As Double) As Variant
  Dim x As Double
  Dim y As Double
  Dim z(1 To 2) As Double '1=x,2=y
  Dim R1 As Double
  Dim R2 As Double
  Dim S1 As Double
  Dim S2 As Double

  R1 = (By - Ay) / (Bx - Ax)
  R2 = (Dy - Cy) / (Dx - Cx)
  S1 = Ay - (R1 * Ax)
  S2 = Cy - (R2 * Cx)
  x = (S2 - S1) / (R1 - R2)
  y = R1 * x + S1
  z(1) = x
  z(2) = y
  fKOUSA = z
End Function

0 hits

【60942】交点の判定 質問者 09/3/26(木) 0:51 質問
【60953】Re:交点の判定 n 09/3/26(木) 21:22 発言
【60954】Re:交点の判定 質問者 09/3/26(木) 23:05 お礼
【60956】Re:交点の判定 横入り 09/3/27(金) 7:02 発言
【60957】Re:交点の判定 SS 09/3/27(金) 9:35 発言
【60991】Re:交点の判定 横入り 09/3/31(火) 23:02 発言

21181 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free