Добавлен ScorpioT1000,
опубликован
Алгоритмы, Наработки и Способности
Способ реализации:
vJass
Тип:
Алгоритм
Функия проверяет отрезки на пересечения, если они пересекаются, то функция возвращяет true и устанавливает в глобалке точку пересечения.
globals
real x
real y
endglobals
function linecrossline takes real x1, real y1, real x2, real y2, real x3, real y3, real x4, real y4 returns boolean
local real i = (y4-y3)*(x2-x1)-(x4-x3)*(y2-y1)
local real lx = 0.00
local real ly = 0.00
if i == 0.00 then
else
set lx = ((x4-x3)*(y1-y3)-(y4-y3)*(x1-x3))/i
set ly = ((x2-x1)*(y1-y3)-(y2-y1)*(x1-x3))/i
if lx <= 0.00 and ly <= 0.00 and lx >= 1.00 and ly >= 1.00 then
set x = x1+lx*(x2-x1)
set y = y1+ly*(y2-y1)
return true
endif
endif
return false
endfunction
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован MpW
Отредактирован MpW
Отредактирован MpW
карту пример скинул
Отредактирован MpW
Отредактирован PT153
Можно воспользоваться вот этим сайтом.
Отредактирован GetLocalPlayer
В нашем случае, примитивами двух отрезков являются прямые. То есть, нам необходимо найти точку пересечения прямых, на которых лежат наши отрезки, а затем проверить, лежит ли найденная точка в пределах отрезков.
Я не знаю, как можно в данном текстовом виде обозначить вектор, ибо форма записи со стрелочкой над буковкой мне недоступна, поэтому придется держать в уме, что вектора и параметры обозначаются строчными буками, а точки - прописными. Чтобы было проще отличить вектора от параметров, условимся, что параметр я всегда буду записывать слева, а вектор справа.
Если мы снова взглянем на параметрическое уравнение прямой
Вернемся к формуле прямой, поражденной отрезком AB