zoukankan      html  css  js  c++  java
  • 果园里的树

    题目:

    原理:如果点在三角形内部,则三个小三角形的面积之和等于大三角形的面积

    重点是~

    //果园里的树 
    #include<iostream>
    #include<cmath>
    #define EPS 1e-9
    using namespace std;
    
    double area2(double x0, double y0, double x1, double y1, double x2, double y2)
    {
        double s = x0 * y1 + x1 * y2 + x2 * y0 - x0 * y2 - x1 * y0 - x2 * y1;
        if(s < 0)
            s = -1 * s;
        return s;
    }
    
    int main()
    {
        double x0, y0, x1, y1, x2, y2;
        cin >> x0 >> y0 >> x1 >> y1 >> x2 >> y2;
        double min_x, min_y, max_x, max_y;
        
        //计算包含三角形的最小矩形    
        min_x = x0 < x1 ? x0 : x1;
        min_x = min_x < x2 ? min_x : x2;
        min_x = floor(min_x);       //下限 
        min_y = y0 < y1 ? y0 : y1;
        min_y = min_y < y2 ? min_y : y2;
        min_y = floor(min_y);
        
        max_x = x0 > x1 ? x0 : x1;
        max_x = max_x > x2 ? max_x : x2;
        max_x = ceil(max_x);       //上限 
        max_y = y0 > y1 ? y0 : y1;
        max_y = max_y > y2 ? max_y : y2;
        max_y = ceil(max_y);
        
        //对矩形内的点依次做判断 
        double s = area2(x0, y0, x1, y1, x2, y2);    
        int c1 = 0, c2 = 0;
        
        for(int i = min_x; i <= max_x; i++)
        {
            for(int j = min_y; j <= max_y; j++)
            {
                double s1 = area2(i, j, x0, y0, x1, y1); 
                double s2 = area2(i, j, x0, y0, x2, y2); 
                double s3 = area2(i, j, x1, y1, x2, y2);
                
                if(s1 + s2 + s3 - s <= EPS)        //分布在三角形内部的坐标点 
                    c1++;            
                if((s1 <= EPS) || (s2 <= EPS) || (s3 <= EPS))        //分布在三角形边界的坐标点
                    c2++;
            }
        }
        
        cout << c1 << endl;
        cout << c2 << endl;
        
        return 0;
    }
  • 相关阅读:
    bootstrap 导航学习
    算法学习1-插入排序
    管道输入输出流
    1+2*2+3*3+4*4+...+n*n计算
    maven安装for eclipse kepler
    javascript学习7-细节总结
    Git Fetch failed解决办法
    前端学习笔记
    TIOBE 编程语言排行榜
    用VS2012创建和使用WebService
  • 原文地址:https://www.cnblogs.com/fengyanlover/p/5293943.html
Copyright © 2011-2022 走看看