두 개의 3d 라인 세그먼트의 교차 부분을 얻기 위해이 코드를 작성했습니다.3d 라인 교차 코드가 제대로 작동하지 않습니다.
이 코드의 결과는 정확하지 않으며 교점은 항상 두 줄에있는 것은 아닙니다.
나는 혼란스럽고 내가 뭘 잘못하고 있는지 확신 할 수 없다.
--dir = direction
--p1,p2 = represents the line
function GetIntersection(dirStart, dirEnd, p1, p2)
local s1_x, s1_y, s2_x, s2_y = dirEnd.x - dirStart.x, dirEnd.z - dirStart.z, p2.x - p1.x, p2.z - p1.z
local div = (-s2_x * s1_y) + (s1_x * s2_y)
if div == 0 then return nil end
local s = (-s1_y * (dirStart.x - p1.x) + s1_x * (dirStart.z - p1.z))/div
local t = (s2_x * (dirStart.z - p1.z) - s2_y * (dirStart.x - p1.x))/div
if (s >= 0 and s <= 1 and t >= 0 and t <= 1) and (Vector(dirStart.x + (t * s1_x), 0, dirStart.z + (t * s1_y)) or nil) then
local v = Vector(dirStart.x + (t * s1_x),0,dirStart.z + (t * s1_y))
return v
end
end
이 코드는 무엇을 의도합니까? 이것은 2D와 3D 케이스의 이상한 혼합입니다! – MBo
예상되는 결과와 함께 실패한 특정 테스트를 제공 할 수 있습니까? –