static void /* column adjust for range -1 to 1 to a to b */ colshft(double a, double b, projUV **d, int n, int m) { int k, j; double fac, cnst; cnst = 2. / (b - a); fac = cnst; for (j = 1; j < n; ++j) { dmult(d[j], fac, m); fac *= cnst; } cnst = .5 * (a + b); for (j = 0; j <= n-2; ++j) for (k = n - 2; k >= j; --k) dadd(d[k], d[k+1], cnst, m); }
int main() { int n; bool flag; double ans; while (scanf("%d", &n) != EOF && n > 0) { for (int i = 0; i < n; i++) { scanf("%d%d%d", &p[i].x, &p[i].y, &p[i].z); } ans = 0; for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { for (int k = j + 1; k < n; k++) { Point dn = xmult(p[j] - p[i], p[k] - p[i]); ss = 0; flag = true; for (int t = 0; t < n; t++) { s[t] = sign(dmult(dn, p[t] - p[i])); if (s[t] != 0) { if (ss == 0) { ss = s[t]; } else if (ss != s[t]) { flag = false; break; } } } if (flag) { ans += abs(dn); } } } } printf("%.0lf\n", ans / 2); } return 0; }
double angle_sin(point3 l1,point3 l2,point3 s1,point3 s2,point3 s3) { return dmult(subt(l1,l2),pvec(s1,s2,s3))/vlen(subt(l1,l2))/vlen(pvec(s1,s2,s3)); }
double angle_sin(line3 l,plane3 s) { return dmult(subt(l.a,l.b),pvec(s))/vlen(subt(l.a,l.b))/vlen(pvec(s)); }