Fzu2110计算几何

判断锐角三角形的方法:两个较短边的平方和大于较长那条边的平方和,这个三角形就是锐角三角形。

#define _CRT_SECURE_NO_DEPRECATE
#include <cstdio>    
#include <algorithm>    
#include<iostream>
using namespace std;
struct node
{
    double x;
    double y;
}a[100];
double num(double x1, double y1, double x2, double y2)
{
    return (x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2);
}
bool istri(int i, int j, int k)
{
    double s[3];
    s[0] = num(a[i].x, a[i].y, a[j].x, a[j].y);
    s[1] = num(a[i].x, a[i].y, a[k].x, a[k].y);
    s[2] = num(a[j].x, a[j].y, a[k].x, a[k].y);
    sort(s, s + 3);
    if (s[2] < s[0] + s[1])
    {
        return 1;
    }
    else
        return 0;
}
int main()
{
    int t, n;
    scanf("%d", &t);
    while (t--)
    {
        scanf("%d", &n);
        for (int i = 0; i < n; i++)
        {
            scanf("%lf%lf", &a[i].x, &a[i].y);
        }
        int sum = 0;
        for (int i = 0; i < n; i++)
        {
            for (int j = i + 1; j < n; j++)
            {
                for (int k = j + 1; k < n; k++)
                {
                    if (istri(i, j, k))
                    {
                        sum++;
                    }
                }
            }
        }
        cout << sum << endl;
    }
    return 0;
}

 

posted @ 2016-10-27 23:18  web之路  阅读(94)  评论(0)    收藏  举报