| 117 |
|
o->os = NULL; |
| 118 |
|
} |
| 119 |
|
|
| 120 |
– |
|
| 120 |
|
int |
| 121 |
|
inface( /* determine if point is in face */ |
| 122 |
|
FVECT p, |
| 139 |
|
ncross = 0; |
| 140 |
|
/* positive x axis cross test */ |
| 141 |
|
while (n--) { |
| 142 |
< |
if (FRELEQ(p0[yi], y) && FRELEQ(p1[yi], y) && |
| 142 |
> |
if (FABSEQ(p0[yi], y) && FABSEQ(p1[yi], y) && |
| 143 |
|
(p0[xi] > x) ^ (p1[xi] > x)) |
| 144 |
|
return(1); /* edge case #1 */ |
| 145 |
|
if ((p0[yi] > y) ^ (p1[yi] > y)) { |
| 149 |
|
else if (tst) { |
| 150 |
|
double prodA = (p0[yi]-y)*(p1[xi]-x); |
| 151 |
|
double prodB = (p0[xi]-x)*(p1[yi]-y); |
| 152 |
< |
if (FRELEQ(prodA, prodB)) |
| 152 |
> |
if (FABSEQ(prodA, prodB)) |
| 153 |
|
return(1); /* edge case #2 */ |
| 154 |
|
ncross += (p1[yi] > p0[yi]) ^ (prodA > prodB); |
| 155 |
< |
} else if (FRELEQ(p0[xi], x) && FRELEQ(p1[xi], x)) |
| 155 |
> |
} else if (FABSEQ(p0[xi], x) && FABSEQ(p1[xi], x)) |
| 156 |
|
return(1); /* edge case #3 */ |
| 157 |
|
} |
| 158 |
|
p0 = p1; |