Parts 2-5 are distinct problems that can be generalised fairly easily.

I'll look at part 3/4 first since I've already convincingly solved part 2 several times over..

The third part of the problem is to calculate the point where a line drawn from the camera intersects with the line 1 from part 2, and where it intersects with line 2 from part 2.

The fourth part of the problem is to determine which intersection point we found in part 3 is further from the camera; the line that is furthest from the camera will have the pseudovertex added (potentially).

`function Intersect3D(x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4)`

camX = GetCameraX()

camY = GetCameraY()

camZ = CameraZ -- this is a custom function of mine..

i3dX = intersectX -- the 2D intersection coordinate from step 2

i3dY = intersectY

i3dZ = 0 -- 2D leveldraw coordinates can expressed in 3D simply by adding Z = 0, the flat plane that is the game screen.

-- So where does the line defined by (camX, camY, camZ) (i3dX, i3dY, i3dZ) intersect with (x1, y1, z1) (x2, y2, z2) ?

-- First calculate camdx, camdy, camdz

camdx = camX - i3dX

camdy = camY - i3dY

camdz = camZ - i3dZ

-- Then calculate dx, dy, dz

dx = x2 - x1

dy = y2 - y1

dz = z2 - z1

-- Define line 1 to contain point (camX,camY,camZ) with vector (camdx,camdy,camdz).

-- Define line 2 to contain point (x1,y1,z1) with vector (dx, dy, dz).

(Need help with this!)