I wanted to make my work on a 3D rendering engine available for somebody who might find it useful . The whole thing is one header file : you enter screen height, width , angle of sight , direction of sight and position of the eye and the coordinates of a 3D point and you get the x,y coordinates of that point on the screen, as simple as it can get. What that gives you is the capability of making vector structures easily . The comments on the code are in english and bulgarian (I haven't interpreted them all) . If you have any questions (as in you want to know how it works , because it'll be hard to get from the code) or remarks I'd be happy to address them :) . The code turned out a bit too long to post here . Here's a link to SourceForge : http://sourceforge.net/projects/renderh/files/Render.h/download
I'll be harsh: the design you've chosen makes this completely useless.
To avoid overdrawing, one would want to do exactly the opposite of you're doing. Start from a screen coordinate and see what's visible from there. If you start from a scene coordinate, it means that to, for example, draw a line, you'll have to sample points in that line and hope that the resolution is just right. If it's too high, you'll draw far more points than necessary; if it's too low, the line will look like just a bunch of points. http://imageshack.us/photo/my-images/181/perspectiveaf7.png/
That's why I mentioned vector graphics - If you want to draw lines (say a cube) and observe them from different points of view you'll do the following :
#include <Render.h>
int main (){
// for a cube with apexes on the points A,B,C,D,A1,B1,C1,D1