Принадлежит ли точка с координатами ( Х,У) области треугольника АВС, где(X1,Y1),(X2,Y2),(X3,Y3) . Нужно написать программу для кубэсика..
Помогите, пожалуйста. мне очень нужно(
Аноним:
А в координатах надо представить треугольник последовательностью и трех замыкающийся в исходную точку векторов и рассмотреть положение заданной точки относительно каждого вектора, делая обход по контуру треугольника. Например, если обходить по часовой стрелке, то точка принадлежит треугольнику если она будет лежать слева от каждого из векторов. Но вот это условие аналитически для каждого вектора представляется весьма непростой формулой.
Ответы
Ответ дал:
1
qBASIC:
DECLARE FUNCTION L# (x1#, y1#, x2#, y2#)
DECLARE FUNCTION s3# (x1#, y1#, x2#, y2#, x3#, y3#)
CLS
INPUT "Координаты точки А через запятую: ", ax#, ay#
INPUT "Координаты точки B через запятую: ", bx#, by#
INPUT "Координаты точки C через запятую: ", cx#, cy#
INPUT "Координаты точки m через запятую: ", mx#, my#
s# = s3#(ax#, ay#, bx#, by#, cx#, cy#)
sab# = s3#(ax#, ay#, bx#, by#, mx#, my#)
sbc# = s3#(bx#, by#, cx#, cy#, mx#, my#)
sca# = s3#(cx#, cy#, ax#, ay#, mx#, my#)
eps# = s# - (sab# + sbc# + sca#)
eps% = INT(eps# * 10000) / 10000
IF eps% = 0 THEN PRINT "Внутри" ELSE PRINT "Не внутри"
END
FUNCTION L# (x1#, y1#, x2#, y2#)
L# = SQR((x2# - x1#) ^ 2 + (y2# - y1#) ^ 2)
END FUNCTION
FUNCTION s3# (x1#, y1#, x2#, y2#, x3#, y3#)
a# = L#(x1#, y1#, x2#, y2#)
b# = L#(x2#, y2#, x3#, y3#)
c# = L#(x3#, y3#, x1#, y1#)
p# = (a# + b# + c#) / 2
s3# = SQR(p# * (p# - a#) * (p# - b#) * (p# - c#))
END FUNCTION
Тестовое решение:
Координаты точки А через запятую: 2,1
Координаты точки B через запятую: 15,10
Координаты точки C через запятую: 12,4
Координаты точки m через запятую: 9,5
Внутри
DECLARE FUNCTION L# (x1#, y1#, x2#, y2#)
DECLARE FUNCTION s3# (x1#, y1#, x2#, y2#, x3#, y3#)
CLS
INPUT "Координаты точки А через запятую: ", ax#, ay#
INPUT "Координаты точки B через запятую: ", bx#, by#
INPUT "Координаты точки C через запятую: ", cx#, cy#
INPUT "Координаты точки m через запятую: ", mx#, my#
s# = s3#(ax#, ay#, bx#, by#, cx#, cy#)
sab# = s3#(ax#, ay#, bx#, by#, mx#, my#)
sbc# = s3#(bx#, by#, cx#, cy#, mx#, my#)
sca# = s3#(cx#, cy#, ax#, ay#, mx#, my#)
eps# = s# - (sab# + sbc# + sca#)
eps% = INT(eps# * 10000) / 10000
IF eps% = 0 THEN PRINT "Внутри" ELSE PRINT "Не внутри"
END
FUNCTION L# (x1#, y1#, x2#, y2#)
L# = SQR((x2# - x1#) ^ 2 + (y2# - y1#) ^ 2)
END FUNCTION
FUNCTION s3# (x1#, y1#, x2#, y2#, x3#, y3#)
a# = L#(x1#, y1#, x2#, y2#)
b# = L#(x2#, y2#, x3#, y3#)
c# = L#(x3#, y3#, x1#, y1#)
p# = (a# + b# + c#) / 2
s3# = SQR(p# * (p# - a#) * (p# - b#) * (p# - c#))
END FUNCTION
Тестовое решение:
Координаты точки А через запятую: 2,1
Координаты точки B через запятую: 15,10
Координаты точки C через запятую: 12,4
Координаты точки m через запятую: 9,5
Внутри
Вас заинтересует
1 год назад
1 год назад
1 год назад
1 год назад
6 лет назад
6 лет назад
8 лет назад