zoukankan      html  css  js  c++  java
  • 错题回顾总结:面积交

    传送门:http://192.168.173.163/JudgeOnline/problem.php?cid=1244&pid=4

    解析:
    坐标系按照长短轴比例变换,之后相当于求两个等大的圆的面积交,求完后再乘上变换比例即可。
    #include<bits/stdc++.h>
    using namespace std;
    
    int main()
    {
    	int t;
    	scanf("%d",&t);
    	while(t--)
    	{
    		double a,b,x1,y1,x2,y2;
    		scanf("%lf%lf%lf%lf%lf%lf",&a,&b,&x1,&y1,&x2,&y2);		//输入实数用"%lf"哦! 
    		double rate=a/b;
    		x1=x1/rate;x2=x2/rate;						//坐标系按照长短轴比例变换,
    											//之后相当于求两个等大的圆的面积交
    		double r=b;							//将两个椭圆都变成两个圆了! 
    		double d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));		//计算两个圆心之间的距离公式 
    		double ans;
    		
    		if(d>=2*r) ans=0;		//两个圆不相交哦! 
    		else
    		{
    			double ang=2*acos(d/2/r);		 //辐角  acos(a/b) in c++ == arccos(a/b) in maths
    			double l=sqrt(r*r-d*d/4);
    			ans=r*r*ang-l*d;		//geometric konledge!
    		}
    		printf("%.2f
    ",ans*rate);		//保留两位小数的实数 	%.2f 
    	}
    	return 0;
    }
    

      这个几何公式的推导,待我用心研究哦!

  • 相关阅读:
    C++探究transform算法
    C++探究foreach算法
    C++ MFC棋牌类小游戏day6
    C++ MFC棋牌类小游戏day5
    C++ MFC棋牌类小游戏day4
    C++ MFC棋牌类小游戏day3
    MFC 字体
    C++ MFC棋牌类小游戏day2
    第三章 使用属性升级MyBank
    第二章 C#语法快速热身
  • 原文地址:https://www.cnblogs.com/dragondragon/p/11386021.html
Copyright © 2011-2022 走看看