Добавлен MpW
у меня вопрос. как определить что отрезок прямой. звучит тупо. И вопрос 5 класса наверн. Я знаю что можно Atan2 найти угол отрезка.
Мне нужно, что бы алгоритм брал только диагонали, а не прямые отрезки (углы 0,90,180,270, 360 не должен брать). Пробовал и радианы и градусы.
function AngleVector takes real x1, real y1, real x2, real y2 returns real
return Atan2(y2 - y1, x2 - x1)
endfunction
set Angle = AngleVector(Ax, Ay, Vx2[F1], Vy2[F1])* bj_RADTODEG
//0 = 0 или 360; 3.142 = 180; 1.571 = 90; -1.571 = 270
if (Angle != 0) or (Angle != 360.) or (Angle != -360.) or (Angle != 180.) or (Angle != -180.) or (Angle != 90.) or (Angle != -90.) then
//показать дебагом угол
else
//вывести дебаг ошибку
endif
У меня почему-то получается угол отрицательный -90. А по условию проходит. это тупо.
Благо только сейчас заметил что не работает проверка, как только написал отладку. Видать что-то другое к счастью не допустило отрезок. У меня там еще несколько проверок.
Мб надо сравнивать координаты? типа x1 == x2 или y1 == y2 значит угол прямой?
Принятый ответ
Равно в варике округляет, а вот неравно - нет. У тебя и выводит 90.000, потому что R2S округляет до 3-го знака, а на самом деле там было что-то вроде 89.999999. 90 != 89.999999 в варике, потому условие прошло. Хочешь, чтобы не прошло, используй not (90 == angle). Тогда 89.999999 округлится до 90 и условие не пройдёт.
Либо используй то, что показал Скорп, тоже подойдёт.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован MpW
Отредактирован ScorpioT1000
Отредактирован MpW
Отредактирован PT153
Отредактирован ScorpioT1000
Отредактирован MpW
в любом случае, раз решено, то решено
Отредактирован ScorpioT1000
Отредактирован MpW
Отредактирован PT153
Вот тесты, там видно, что сравнение по эпсилону работает как надо.
Отредактирован MpW
Bergi_Bear, но мне это не нужно. достаточно просто координаты сравнить.