zoukankan      html  css  js  c++  java
  • [日常摸鱼]Uva11178Morley's Theorem-几何

    题意:给一个$Delta ABC$,分别做三个角的三等分线相交成$Delta DEF$,求出$D,E,F$的坐标。


    直接根据题意模拟

    #include<cstdio>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    struct Point
    {
        double x,y;
        Point(double x1=0,double y1=0){x=x1;y=y1;}
    };
    typedef Point Vector;
    
    inline Vector operator +(Point a,Point b)
    {
        return Vector(a.x+b.x,a.y+b.y);
    }
    
    inline Vector operator -(Point a,Point b)
    {
        return Vector(a.x-b.x,a.y-b.y);
    }
    
    inline Vector operator *(double t,Vector a)
    {
        return Vector(a.x*t,a.y*t);
    }
    
    inline Vector ratate(Vector v,double a)
    {
        return Vector(v.x*cos(a)-v.y*sin(a),v.x*sin(a)+v.y*cos(a));
    }
    
    inline double Dot(Vector a,Vector b)
    {
        return a.x*b.x+a.y*b.y;
    }
    
    inline double len(Vector a)
    {
        return sqrt(Dot(a,a));
    }
    
    inline double angle(Vector a,Vector b)
    {
        return acos(Dot(a,b)/len(a)/len(b));
    }
    
    inline double Cross(Vector a,Vector b)
    {
        return a.x*b.y-a.y*b.x;
    }
    
    inline Point getLineIntersection(Point A,Point B,Vector v1,Vector v2)
    {
        Vector u=A-B;
        double t=Cross(v2,u)/Cross(v1,v2);
        return A+t*v1;
    }
    
    inline Point solve(Point A,Point B,Point C)
    {
        Vector v1=C-B,v2=B-C;
        double alpha=angle(v1,A-B),beta=angle(v2,A-C);
        v1=ratate(v1,alpha/3);v2=ratate(v2,-beta/3);
        return getLineIntersection(B,C,v1,v2);
    }
    
    inline Point readPoint()
    {
        double x,y;
        scanf("%lf%lf",&x,&y);
        return Point(x,y);
    }
    
    int main()
    {
        Point A,B,C,D,E,F;
        int T;
        scanf("%d",&T);
        while(T--)
        {
            A=readPoint();B=readPoint();C=readPoint();
            D=solve(A,B,C);E=solve(B,C,A);F=solve(C,A,B);
            printf("%.6lf %.6lf %.6lf %.6lf %.6lf %.6lf
    ",D.x,D.y,E.x,E.y,F.x,F.y); 
        }
        return 0;
    }
    View Code
  • 相关阅读:
    [Python]爬虫v0.1
    [Python]同是新手的我,分享一些经验
    [python]闭包到底是什么鬼?
    测试Flask应用_学习笔记
    Flask模板_学习笔记
    SQL Server Alwayson概念总结
    JDBC数据库编程:ResultSet接口
    JDBC操作,执行数据库更新操作
    接口怎么实例化?
    java数据库编程:JDBC操作及数据库
  • 原文地址:https://www.cnblogs.com/yoshinow2001/p/8214839.html
Copyright © 2011-2022 走看看