编程挑战之三角形内切圆与外接圆源码

来源:互联网 发布:泉下有知的意思是什么 编辑:程序博客网 时间:2024/05/14 20:08

一个三角形必然存在它的内切圆与外接圆,求他们的面积比。考虑到精度问题,我们输出面积比*1000的整数部分(直接下取整)。 输入数据是一个三角形的三个顶点,但这三个顶点在三维空间中,所以输入是9个整数,分别表示三个顶点(x1,y1,z1) (x2,y2,z2) (x3,y3,z3),保证三点不共线,每个整数在-1000,+1000范围内。 输出内接圆与外切圆的面积比*1000的整数部分。 

应朋友要求,把C#版本的源码贴出:

using System;

public class Test 
{
   public static  int ratio(int x1,int y1,int z1,int x2,int y2,int z2,int x3,int y3,int z3)
    {
        double a=Math.Sqrt((double)(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2));
        double b = Math.Sqrt((double)(x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)+(z1-z3)*(z1-z3));
        double c = Math.Sqrt((double)(x2-x3)*(x2-x3)+(y2-y3)*(y2-y3)+(z2-z3)*(z2-z3));
        if(a+b==c || a==b+c || b==c+a) return 0;
        double p = (a+b+c)/2;
        double s=Math.Sqrt(p*(p-a)*(p-b)*(p-c));
        double ri=s/p;
        double ro = a*b*c/4/s;
        int rat = (int)(ri/ro*ri/ro*1000);
        
        return rat;
    }
    //start 提示:自动阅卷起始唯一标识,请勿删除或增加。 
    public static void Main()
    {
       Console.WriteLine(ratio(0,0,0,0,0,100,0,173,0));
    }
    //end //提示:自动阅卷结束唯一标识,请勿删除或增加。
}



0 0
原创粉丝点击