Предмет: Информатика,
автор: lenka9prosto
Принадлежит ли точка с координатами ( Х,У) области треугольника АВС, где(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
Внутри
Похожие вопросы
Предмет: Окружающий мир,
автор: angela256
Предмет: Окружающий мир,
автор: angela256
Предмет: Қазақ тiлi,
автор: инара7
Предмет: Алгебра,
автор: rurusha05
Предмет: География,
автор: vladislavaBurkovskau