|
グラフの座標ではなく、元データから算出すれば良いのですよね?
>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
|
|