hdu6206 Apple java,三點找外接圓

來源:互聯網
上載者:User

標籤:out   close   find   圓心   ret   math   except   pid   exti   

hdu6206  

題意:給出 4 個點,問第4個點是否在前三個點形成的外接圓外。

tags: 會有精度問題,上 java 。。

1】公式

已知三點座標,求外接圓圓心座標與半徑。

//已知三點座標,求外接圓圓心座標與半徑。x=((y2-y1)*(y3*y3-y1*y1+x3*x3-x1*x1)-(y3-y1)*(y2*y2-y1*y1+x2*x2-x1*x1))/(2.0*((x3-x1)*(y2-y1)-(x2-x1)*(y3-y1)));y=((x2-x1)*(x3*x3-x1*x1+y3*y3-y1*y1)-(x3-x1)*(x2*x2-x1*x1+y2*y2-y1*y1))/(2.0*((y3-y1)*(x2-x1)-(y2-y1)*(x3-x1)));r^2=(x1-a)*(x1-a)+(y1-b)*(y1-b);

 

//package project1;import java.util.*;import java.math.*;import java.util.Scanner;public class Main {     //Test2 {    public static void main(String[] argv) throws Exception    {        Scanner sc = new Scanner(System.in);        MathContext mc = new MathContext(7, RoundingMode.HALF_DOWN);                int T = sc.nextInt();        for(int cas=1; cas<=T; ++cas)        {            BigDecimal x1=sc.nextBigDecimal(), y1=sc.nextBigDecimal(), x2=sc.nextBigDecimal(), y2=sc.nextBigDecimal();            BigDecimal x3=sc.nextBigDecimal(), y3=sc.nextBigDecimal(), x4=sc.nextBigDecimal(), y4=sc.nextBigDecimal();            BigDecimal x, y, r;                        BigDecimal a1=y2.subtract(y1),  a2=y3.multiply(y3), a3=y1.multiply(y1), a4=x3.multiply(x3), a5=x1.multiply(x1);            BigDecimal a6 = (y2.subtract(y1)).multiply(y3.pow(2).subtract(y1.pow(2)).add(x3.pow(2)).subtract(x1.pow(2)));            BigDecimal a7 = (y3.subtract(y1)).multiply(y2.pow(2).subtract(y1.pow(2)).add(x2.pow(2)).subtract((x1.pow(2))));            a1=BigDecimal.valueOf(2);            a2=x3.subtract(x1);            a3=y2.subtract(y1);            a4=x2.subtract(x1);            a5=y3.subtract(y1);            BigDecimal a8 = a1.multiply((a2).multiply(a3).subtract(a4.multiply(a5)));            x = a6.subtract(a7).divide(a8);            a6 = (x2.subtract(x1)).multiply(x3.pow(2).subtract(x1.pow(2)).add(y3.pow(2)).subtract(y1.pow(2)));            a7 = (x3.subtract(x1)).multiply(x2.pow(2).subtract(x1.pow(2)).add(y2.pow(2)).subtract((y1.pow(2))));            a1=BigDecimal.valueOf(2);            a2=y3.subtract(y1);            a3=x2.subtract(x1);            a4=y2.subtract(y1);            a5=x3.subtract(x1);            a8 = a1.multiply(a2.multiply(a3).subtract(a4.multiply(a5)));            y = a6.subtract(a7).divide(a8);                        a1 = (x1.subtract(x).pow(2));            a2 = (y1.subtract(y).pow(2));            r = a1.add(a2);                        a1 = (x.subtract(x4).pow(2));            a2 = (y.subtract(y4).pow(2));            BigDecimal dis = a1.add(a2);                        //System.out.println(x+"  "+y+"  "+r+"  "+dis+"-----");                        if(dis.compareTo(r) > 0) System.out.println("Accepted");            else System.out.println("Rejected");        }    }}/*已知三點座標,求外接圓圓心座標與半徑。x=((y2-y1)*(y3*y3-y1*y1+x3*x3-x1*x1)-(y3-y1)*(y2*y2-y1*y1+x2*x2-x1*x1))/(2.0*((x3-x1)*(y2-y1)-(x2-x1)*(y3-y1)));y=((x2-x1)*(x3*x3-x1*x1+y3*y3-y1*y1)-(x3-x1)*(x2*x2-x1*x1+y2*y2-y1*y1))/(2.0*((y3-y1)*(x2-x1)-(y2-y1)*(x3-x1)));r^2=(x1-a)*(x1-a)+(y1-b)*(y1-b);*/
View Code

2】函數

//三點找一圓Circle findCircle2(P p1, P p2, P p3){    double A1, A2, B1, B2, C1, C2, temp;    A1 = p1.x - p2.x;    B1 = p1.y - p2.y;    C1 = (p1.x*p1.x - p2.x*p2.x + p1.y*p1.y - p2.y*p2.y) / 2;    A2 = p3.x - p2.x;    B2 = p3.y - p2.y;    C2 = (p3.x*p3.x - p2.x*p2.x + p3.y*p3.y - p2.y*p2.y) / 2;    temp = A1*B2 - A2*B1;    Circle CD;    CD.center.x = (C1*B2 - C2*B1) / temp;    CD.center.y = (A1*C2 - A2*C1) / temp;    CD.radius = sqrtf((CD.center.x - p1.x)*(CD.center.x - p1.x) + (CD.center.y - p1.y)*(CD.center.y - p1.y));    return CD;}

 

hdu6206 Apple java,三點找外接圓

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.