The R Project SVN R

Rev

Rev 6516 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6516 Rev 6994
Line 1292... Line 1292...
1292
 
1292
 
1293
static void PerspBox(int front, double *x, double *y, double *z, DevDesc *dd)
1293
static void PerspBox(int front, double *x, double *y, double *z, DevDesc *dd)
1294
{
1294
{
1295
    Vector3d u0, v0, u1, v1, u2, v2, u3, v3;
1295
    Vector3d u0, v0, u1, v1, u2, v2, u3, v3;
1296
    double d[3], e[3];
1296
    double d[3], e[3];
1297
    int f, i, p0, p1, p2, p3, near;
1297
    int f, i, p0, p1, p2, p3, nearby;
1298
    int ltysave = dd->gp.lty;
1298
    int ltysave = dd->gp.lty;
1299
    if (front)
1299
    if (front)
1300
	dd->gp.lty = LTY_DOTTED;
1300
	dd->gp.lty = LTY_DOTTED;
1301
    else
1301
    else
1302
	dd->gp.lty = LTY_SOLID;
1302
	dd->gp.lty = LTY_SOLID;
Line 1334... Line 1334...
1334
 
1334
 
1335
        for (i = 0; i < 3; i++) {
1335
        for (i = 0; i < 3; i++) {
1336
	    d[i] = v1[i]/v1[3] - v0[i]/v0[3];
1336
	    d[i] = v1[i]/v1[3] - v0[i]/v0[3];
1337
	    e[i] = v2[i]/v2[3] - v1[i]/v1[3];
1337
	    e[i] = v2[i]/v2[3] - v1[i]/v1[3];
1338
        }
1338
        }
1339
	near = (d[0]*e[1] - d[1]*e[0]) < 0;
1339
	nearby = (d[0]*e[1] - d[1]*e[0]) < 0;
1340
 
1340
 
1341
	if ((front && near) || (!front && !near)) {
1341
	if ((front && nearby) || (!front && !nearby)) {
1342
	    if (!EdgeDone[Edge[f][0]]++)
1342
	    if (!EdgeDone[Edge[f][0]]++)
1343
		GLine(v0[0]/v0[3], v0[1]/v0[3],
1343
		GLine(v0[0]/v0[3], v0[1]/v0[3],
1344
		      v1[0]/v1[3], v1[1]/v1[3], USER, dd);
1344
		      v1[0]/v1[3], v1[1]/v1[3], USER, dd);
1345
	    if (!EdgeDone[Edge[f][1]]++)
1345
	    if (!EdgeDone[Edge[f][1]]++)
1346
		GLine(v1[0]/v1[3], v1[1]/v1[3],
1346
		GLine(v1[0]/v1[3], v1[1]/v1[3],