Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
11
Cevap
978
Tıklama
0
Öne Çıkarma
C ve graphics.h kullanarak minimum çember çizmek
C
5 yıl
Çavuş
Konu Sahibi

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?

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



R
5 yıl
Yarbay

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

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 >
Bu mesaja 1 cevap geldi.
T
5 yıl
Yarbay

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ı >
Bu mesaja 1 cevap geldi.
C
5 yıl
Çavuş
Konu Sahibi

noktaların çember üzerinde olması şart değil. içinde de kalabilir. sınırsız nokta girebilir kullanıcı isterse hocam.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @vonderplanitz
C
5 yıl
Çavuş
Konu Sahibi

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.




Bu mesajda bahsedilenler: @requizm
T
5 yıl
Yarbay

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ı >


Bu mesajda bahsedilenler: @carroyo
C
5 yıl
Çavuş
Konu Sahibi

up



P
5 yıl
Binbaşı

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 >

O
5 yıl
Teğmen

< Resime gitmek için tıklayın >


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.


< Resime gitmek için tıklayın >



< Resime gitmek için tıklayın >

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ı.

// 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 >
Bu mesaja 1 cevap geldi.
C
5 yıl
Çavuş
Konu Sahibi

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




Bu mesajda bahsedilenler: @overpSkpt
K
5 yıl
Er

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



T
5 yıl
Yüzbaşı

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.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.