|
From: Petr M. <mi...@ph...> - 2005-04-06 08:40:50
|
> After a quick look at what would be needed, I think you could start out > by adding only 2 new terminal API definitions > term->move3d(double x, double y, double z); > term->vector3d(double x, double y, double z); > > Two more that might or might not be needed > term->point3d(); > term->put_text3d(); > These latter two could maybe be omitted if 3D terminals used a convention > that you must do an explicit move prior to writing a point or a text string. > > The most interesting 3D drawing element, term->filled_polygon(), > already passes a structure pointer rather than in-line coordinates. The terminal should have a "IS3D" flag. Another working scheme, instead of flooding all 2D terminals with dummy 3D routines, is a single generic API term->do3d(XX3D_MOVE, param1, param2) term->do3d(XX3D_VECTOR, param1, param2, param3) term->do3d(XX3D_POINT, param1, param2, param3) term->do3d(XX3D_OPACITY, param1, param2, param3) term->do3d(XX3D_LIGHT, param1) term->do3d(XX3D_SKY, param1) etc. Can those term->do3d() have variable argument list? If not, do3d_1param, do3d_2params, do3d_3params. --- PM |