Определить, является ли точка внутренней точкой треугольника - VB
Формулировка задачи:
Всем привет!
Кто решал такую, помогите)))))
Даны координаты трех вершин треуголника АВС и даны координаты четвертой точки D.
Определить, является ли эта точка внутренней точкой треугольника.
Решение задачи: «Определить, является ли точка внутренней точкой треугольника»
textual
Листинг программы
'знак площади треугольника ABC, по которому можно определить,
'по или против часовой стрелки идёт обход A->B->C
Function SgnS3(ax#, ay#, bx#, by#, cx#, cy#) As Integer
SgnS3 = Sgn((ax - cx) * (by - cy) - (bx - cx) * (ay - cy))
End Function
'принадлежит ли точка O треугольнику ABC?
Function OinABC(ax#, ay#, bx#, by#, cx#, cy#, ox#, oy#) As Boolean
Dim s1 As Integer, s2 As Integer, s3 As Integer
s1 = SgnS3(ax, ay, bx, by, ox, oy)
s2 = SgnS3(bx, by, cx, cy, ox, oy)
s3 = SgnS3(cx, cy, ax, ay, ox, oy)
OinABC = s1 * s2 >= 0 And s2 * s3 >= 0 And s3 * s1 >= 0
End Function
Sub main()
Dim ax#, ay#, bx#, by#, cx#, cy#, ox#, oy#
ax = 1 'val(inputbox("Ax=")) или val(text1) и т.д. для всех
ay = 1
bx = 3
by = 1
cx = 2
cy = 3
ox = 2
oy = 2
If OinABC(ax, ay, bx, by, cx, cy, ox, oy) Then
MsgBox "Принадлежит"
Else
MsgBox "Не принадлежит"
End If
End Sub