Пример #1
0
	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);
}
Пример #2
0
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));
}