Thanks for the fast reply and the idea! It turns out that the point where the triangles cross will be the W = 0 point, so your thinking was spot-on and a lot more exact than mine (I was taking potshots in the dark hoping that the point I picked would keep the perspective--I'm glad I now know the reason).

However, your reply inspired me to try something else, and

**I managed to solve my problem!**

I was solving for the point where the triangles crossed by parametrizing the equations of the 3D lines, not realizing that if I had a line in the pure Z direction (which I did since I'm making a grid), I could not always rely on the X and Y vectors of the line to parametrize it, since I would occasionally get a NaN in (I parametrize and solve for the line intersection point as shown in this link: http://mathforum.org...view/63719.html)

Therefore, I needed to add a bit to my code:

if ((extrudeScale1 < 0) ^ (extrudeScale2 < 0)) { // just assume line direction won't be hurt by using X and Y float x1 = line1start.X; float x2 = line2start.X; float y1 = line1start.Y; float y2 = line2start.Y; float a1 = line1vec.X; float a2 = line2vec.X; float b1 = line1vec.Y; float b2 = line2vec.Y; if ((Math.Abs(lineDirection.Y) < 0.001f) && (Math.Abs(lineDirection.X) < 0.001f)) { // if the line is purely in the Z direction, however, we need to use Z instead of Y y1 = line1start.Z; y2 = line2start.Z; b1 = line1vec.Z; b2 = line2vec.Z; } else if ((Math.Abs(lineDirection.X) < 0.001f) && (Math.Abs(lineDirection.Z) < 0.001f)) { // and similarly, if purely in the Y direction, we need to use Z instead of X x1 = line1start.Z; x2 = line2start.Z; a1 = line1vec.Z; a2 = line2vec.Z; } float t1 = (y1 - y2 - b2 * ((x1 - x2) / a2)) / (b2 * a1 / a2 - b1); float x = line1vec.X * t1 + line1start.X; float y = line1vec.Y * t1 + line1start.Y; float z = line1vec.Z * t1 + line1start.Z; }

Where line1vec and line1start are the starts of the _diagonals_ of the quad, and lineDirection is the direction of the line we are _drawing_. Sorry it's not very clean...and there's probably some optimization to be made too. As usual I don't make any guarantees...

I don't completely understand I had to use Z instead of X when drawing a Y-line (I assume it has to do with the extrusion direction being in the pure X-direction when I was sitting along the Z-axis?), but it did work. Now I have thick lines! (I'm wondering if it was worth the effort and hair-pulling for my little project--but hopefully it will be for someone else).

They're not exactly award-winning without a fair amount of AA, and even then they're pretty ugly. There may even still be some artifacts in there...but I think I'm ready to call them good-enough for my game

Thanks again, Jason, for your help--without the help and encouragement of the GD community I'd have made far less progress on my project.

Best regards,

-- Steve