
Fuzzy Data and
Processing
313
static void cj_out (
double x ,
double y ,
double *xn ,
double *yn ,
int *nn
)
{
double d ;
r
Do not store identical points
*/
if ((*nn > 0) &&
(fabs(x-xn[*nn-1])<
1.e-20)
&& (fabs(y-yn[*nn-1]) <
1.e-20))
return ;
Do not store collinear points
*/
if
(*nn>
1){
d = xn[*nn-1]*(y-yri[*nn-2]) +
yn[*nn-1] * (xn[*nn-2] - x) +
x * yn[*nn-2] - y * xn[*nn-2] ;
if (fabs(d)<
1.e-10)
~*nn ; // Collinear, so replace midpoint
}
xn[*nn] = x ;
yn[*nn] = y ;
++*nn ;
}
static void intsec ( double x1 , double y1 , double x2 , double y2 ,
double y3 , double y4 , double *xint, double *yint )
{
double den ;
den = y1 - y2 - y3 + y4 ;