Добавлен 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
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
например здесь вернет false, ибо i == 0.00:
отрезок x1= 0; y1=0; x2=0; y2=100
отрезок x3=50; y3=50; x4=-50; y4=50
большая часть вычислении возвращает false, наверн просто в координатах нули
ссылка
Отредактирован MpW
Отредактирован MpW