AUSAM/source/libt/source/g_where.c
#include "cplot.h"
/*
* This is the clever part of the clipping:
*
* Each point is assigned a number dependent
* on its position relative to the window.
*
* The numbers are designed to permit logical
* operations on the two endpoints of a vector.
*
* | |
* | |
* 1001 | 1000 | 1010
* | |
* -------------------------------------------------
* | |
* | |
* 0001 | 0000 | 0010
* | |
* | |
* -------------------------------------------------
* | |
* 0101 | 0100 | 0110
* | |
* | |
*
*
*
* Numbers are represented in binary.
* The logical and of the two points is
* true if the line lies entirely off the screen.
*
*/
g_where( x, y )
register int x, y;
{
register int val = 0;
if( x < g_sxlo )
{
val = 1;
}
else
{
if( x > g_sxhi )
{
val = 2;
}
}
if( y < g_sylo )
{
val =| 4;
}
else
{
if( y > g_syhi ) val =| 8;
}
return( val );
}