Chỉ họ thuật toán :D

Thảo luận trong 'Lập trình & Đồ hoạ' bắt đầu bởi jupiter0402, 18/3/07.

  1. jupiter0402

    jupiter0402 Legend of Zelda

    Tham gia ngày:
    6/6/05
    Bài viết:
    950
    Nơi ở:
    Hệ mặt trời
    Ai bít thuật toán tính diện tích phần giao của 2 đường tròn chỉ hộ mình với.Hoặc có đoạn code nào pót lên họ mình với...thx all:hug:
    Và có 1 cách sau : chia hình vuông ngọai tiếp đường tròn nhỏ thành nhiều phần.Kiểm tra hình vuông con có thuộc 2 đường tròn ko??nếu thuộc cả 2 thì cộng vào....Hix nếu ai có đoạn code của cách này thì send hộ mình với....
     
  2. KySyCui

    KySyCui Dragon Quest

    Tham gia ngày:
    11/3/07
    Bài viết:
    1,373
    Nơi ở:
    Xóm Cùi
    Mình chỉ có cách tính thế này. Thử tìm hai giao điểm, tính tổng diện tích các cung tròn (có công thức mà) và tính diện các tam giac tạo bởi hai cặp bán kính và đường nối hai giao điểm.
     
  3. hacker_IT

    hacker_IT Youtube Master Race

    Tham gia ngày:
    2/7/06
    Bài viết:
    30
    Thế input của bạn là gì
    Phải tùy theo input mới có thể có thuật toán đc. chứ
     
  4. jupiter0402

    jupiter0402 Legend of Zelda

    Tham gia ngày:
    6/6/05
    Bài viết:
    950
    Nơi ở:
    Hệ mặt trời
    Thx all ...cuối cùng cũng đã cài đặt xong rùi.Mình chọn cách chia ra thành những hình vuông cho dễ hiểu nhưng chạy lâu 1 tí:whew:
    PHP:
    float dtphangiao(DUONGTRON C,DUONGTRON D)
    {
        
    double s=0;
        for(
    int i=;i<2*C.R/0.001 ;i++)
            for(
    int j=;j<2*C.R/0.01 ;j++)
            {
                
    DIEM temp ;
                
    temp.x=float(C.I.C.j*0.001);
                
    temp.y=float(C.I.C.i*0.001);
                if(
    ktthuoc(C,temp)==1&&ktthuoc(D,temp)==1)
                     
    += 0.000001;
            }
        return (float)
    s;
    }

    int ktthuoc(DUONGTRON C,DIEM P)

    {
        
    float kc khoangcach(C.I,P);
        if(
    kc <= C.R)
            return 
    1;
        return 
    0;
    }


    float khoangcach(DIEM A,DIEM B)
    {
        return 
    float(sqrt((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y)));
    }

     

Chia sẻ trang này