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.
Ç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?
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();
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜ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.