You need a picture plane (realm) and an observation point to calculate perspective:
pt3.x = pt4.x-((pt4.w-ppdist)*(pt4.x-obspt.x)/(pt4.w-obspt.w))
pt3.y = pt4.y-((pt4.w-ppdist)*(pt4.y-obspt.y)/(pt4.w-obspt.w))
pt3.z = pt4.z-((pt4.w-ppdist)*(pt4.z-obspt.z)/(pt4.w-obspt.w))
ppdist = the w value of the picture realm. Make it less than the smallest point on your object (my tesseract's points are 1 or -1 in each directionm, and so I set this value at -2..) Then the observation point (mine is set at 0,0,0,-4) What these formulas are doing is to find out where a line crosses the picture realm when drawn from a point on the object to the observer's position. If you think about it, this is why we see things the way we do. Everything we see is gathered to a point (our eye). :-) To further reduce it to 2D (for display on a monitor...)
pt2.x = pt3.x-((pt3.z-ppdist)*(pt3.x-obspt.x)/(pt3.z-obspt.z))
pt2.y = pt3.y-((pt3.z-ppdist)*(pt3.y-obspt.y)/(pt3.z-obspt.z))
You *could* have a different ppdist and obspt for this operation...
Does that make sense? It's what I used for my animations:
4D Measure 1
4D Measure 2
4D Measure 2 (alt)
5D Measure 1
5D Measure 2
5D Measure 2 (alt)