Şimdi Ara

C ve graphics.h kullanarak minimum çember çizmek

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
13
Cevap
0
Favori
861
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Herkese merhaba arkadaşlar. Proje ödevim var ve günlerdir kitlendim kaldım. Kullanıcıdan alınan noktaları kapsayan bir minimum çember çizilmesi isteniyor. C proglamlama kullanılacak ve graphics.h. Çemberin algoritamasını matematiğini nasıl kurabilirim hiç fikri olan var mı acaba?




  • Çember matematiği cos ve sin fonksiyonlarına pi ve radyan değerlerini vererek oluşturursun.


    Kod

    Yığını:
    glBegin(GL.GL_LINE_LOOP); for(int i =0; i <= 300; i++){ double angle = 2 * Math.PI * i / 300; double x = Math.cos(angle); double y = Math.sin(angle); gl.glVertex2d(x,y); } glEnd();


    Üstteki örneği StackOverflow'dan aldım. OpenGL kütüphanesine ait. Yaptığı şey kısacası çember şeklinde 300 tane nokta oluşturmak. Daha sonra GL_LINE_LOOP'un yapısı gereği bunlar art arda birbirine bağlanır ve çember olmuş olur.


    Peki graphics kütüphanesinde hazır çember fonksiyonu yok mu?


    not:

    https://www.mathopenref.com/coordcirclealgorithm.html




    < Bu mesaj bu kişi tarafından değiştirildi requizm -- 6 Kasım 2020; 22:18:48 >




  • Nokta sayısı nedir? Tahminen 3 noktadan fazla örneğin 4 nokta verilirse o 4 noktadan geçecek çember çizmek imkansız olabilir. .

    < Bu ileti mini sürüm kullanılarak atıldı >
  • noktaların çember üzerinde olması şart değil. içinde de kalabilir. sınırsız nokta girebilir kullanıcı isterse hocam.

  • requizm kullanıcısına yanıt

    var hocam circle fonksiyonu kullanılıyor. ama aslında grafik kütüphanemden çok bana verilen noktaları kapsayan minimum çemberin algoritmasını kafamda oturtamıyorum.

  • carroyo kullanıcısına yanıt
    O zaman en uzak 2 nokta çap olacak şekilde bir çember çizmek yeterli olabilir cunku diger tüm noktaları içine alır. Yani soru öyleyse soru birbirine en uzak 2 noktayı bulma algoritması yazmak ve o 2 nokta çap olacak şekilde BGI (graphics.h) ile çember çizdirmekten ibaret olabilir.

    < Bu ileti mini sürüm kullanılarak atıldı >
  • up

  • Soru çok açıklayıcı değil. İki senaryo için farklı çözümler olur.

    Çember 1 veya 2 noktayı rasgele içerebilir, bundan fazlasını içermesi için şartlı çözüm yapmamız gerekiyor. Diyelim n girdi oldu kullanıcı tarafından. n = 3 için çözüm yapmaya kalkarsak ilk 1 ve 2 noktayi içeren teğetin oluşturduğu çemberin yarıçapını 3. noktayı içerecek şekilde uyarlayabiliriz. 3 den büyük değerler için aklıma bir çözüm gelmiyor şuanda (teker teker kontrol etmek dışında).

    Üç nokta için C(n, 3) kombisyonu kadar farklı çözüm elde ederiz.

    Eğer en dıştaki en büyük kapsayıcı çemberin çizilmesi isteniyorsa, dış kısımda kalan 2 noktayı içerecek şekilde olursa eğer çemberin yarıçapını sonsuza kadar büyütebiliriz ve bu bütün noktaları kapsar.




    < Bu mesaj bu kişi tarafından değiştirildi patatessiz patso -- 7 Kasım 2020; 18:47:21 >
  • C ve graphics.h kullanarak minimum çember çizmek



    5 nokta verilmiş olsun.

    Önce çemberin merkezini bulmak için tüm noktaların x ve y'lerinin ortalaması alınarak merkez noktayı buldum.


    (5+5+3+2+1) / 5 = 3.2

    (1+4+2+4+1) / 5 = 2.4


    Merkez noktan (3.2, 2.4)


    Ardından merkez noktanın diğer noktalara olan uzaklıklarını bularak, en uzak noktayı buldum.


    C ve graphics.h kullanarak minimum çember çizmek


    C ve graphics.h kullanarak minimum çember çizmek


    Kullandığın kütüphanedeki fonksiyonu bilmiyorum fakat şuradan gördüğüm kadarıyla. (https://www.geeksforgeeks.org/draw-circle-c-graphics/)

    Merkez nokta ve en uzak noktanın mesafesini verirsen, en uzak nokta üzerinden geçen ve tüm noktaları kapsayan çemberi çizmiş olursun.

    Üstünden geçmesin istiyorsan 1-2 pixel daha uzatırsın yarıçapını.


    Kod

    Yığını:
    // C Implementation for drawing circle #include <graphics.h>    //driver code int main() {     // gm is Graphics mode which is     // a computer display mode that     // generates image using pixels.     // DETECT is a macro defined in     // "graphics.h" header file     int gd = DETECT, gm;        // initgraph initializes the     // graphics system by loading a     // graphics driver from disk     initgraph(&gd, &gm, "");        // circle function     circle(ort_x, ort_y, en_uzak_nokta_mesafesi);        getch();        // closegraph function closes the     // graphics mode and deallocates     // all memory allocated by     // graphics system .     closegraph();        return 0; }



    < Bu mesaj bu kişi tarafından değiştirildi overpSkpt -- 8 Kasım 2020; 18:34:10 >




  • overpSkpt kullanıcısına yanıt

    hocam evet bu noktaları kapsıyor evet ama minimum çevreleyecek şekilde çizilmesi bekelniyor. senin algoritmadaki çember minimum olmuyor

  • c dili ile ilgili daha fazla bilgi için https://www.ogretmentercihim.com/blog/c-programlama-dili

  • forumla ilgilenen yok mu? utanmaz elemanlar kendi dandik sitelerini atıyorlar alakalı alakasız yerlere, ödev isteyenler gelen cevaplardan direkt kopyala yapıştır yapacağı yoksa cevap bile vermiyor, büyük ihtimal anlamıyor, yazık forumun hali kötü gibi.

  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.