Java'da Çember Üzerindeki Bir Noktanın Koordinatlarını Bulma
-
Selam arkadaşlar,

şu görselde görülen şekildeki çemberler JFrame üzerine drawOval() ile, çizgiler de drawLine ile çizildi. Amacım bu sınıfın bir metoduna parametre olarak gelen açı değerini alıp o açıyı büyük çember üzerinde göstermek. Sarı daireyi de oraya çizmek. Bu sınıfa gönderilecek açıyı başka sınıfta hesaplıyorum, sarı daireyi çizdirmek de problem değil. Ama açı değeri kullanarak dıştaki çembere air olan bir noktayı nasıl hesaplarız? x ve y koordinatlarını hesaplamamız gerekiyor. Bu arada merkez koordinatları (200, 200).
Şöyle bir yöntem düşündüm; gelen açıdan noktanın hangi bölgede olacağını anlayabilirim. Hayali bir noktayı o bölgede işaretleyip ordan koordinat düzlemine bir dik inersek, tan/sin/cos falan bi şekilde noktanın koordinatları hesaplanabilir.
Ama daha basit bir yöntemi mutlaka vardır diye düşünüyorum. Bu kadar uğraşmadan, daha basit ya da verimli bir yöntem önerisi olan var mı?
Bu arada görseldeki durumda sarı daire 90 derecede duruyor.
Umarım derdimi anlatabilmişimdir.
-
Hoca o grafik nesneleri ile bunu çizdirebildin fakat koordinat alamadın mı :D Garip olmuş, neyse ben biraz düşüneyim...
Bu nesneyi çizdiğin kodları görsem belki bir şeyler çıkartabilirim ama proje gizli bir proje sanırım.
-
Kodları koyabilirmisin
-
JPriest! kizdim sana. Nasil bir anlatim bu boyle yakisiyor mu hic sana ? Bence kendin cozebilirsin ama, biraz daha duzgun anlat, classlari soyle tam yaptiklarini yapicaklarini. Yazdiklarin cok karisik geldi.
-
hocam trigonometri bilgin vardır illaki. jframe de bu işe yarayan bir fonksiyon var mı onu bilmiyorum fakat şöyle yapabilirsin. gelen açıya göre konumun hangi bölgede olduğunu hesaplarsın önce.
örneğin 0 ile 90 aralığındaysa; (x,y) olarak düşünürsen açıdan başlayıp istediğin noktayı kesen doğrunun uzunluğuna da a dersen;
x=cos a
y=sin a
olur ama ben olsam bu kadar uzun hesaplamayla uğraşmazdım :) ben de merak ettim umarım fonksiyonu bilen birileri çıkar.
-
Fikret bunu yazdı:
-----------------------------x=cos a
y=sin a
-----------------------------birim çember değilse x=r.cosa y=r.sina (r=radius=yarıçap)
çemberin merkezi (200,200) ise bulduğun x ve y değerlerini 200 ile toplarsın sonuçta x=200+r.cosa y=200+r.sina olur.
-
oldwolf bunu yazdı:
-----------------------------
Fikret bunu yazdı:
-----------------------------x=cos a
y=sin a
-----------------------------birim çember değilse x=r.cosa y=r.sina
-----------------------------evet eklemeyi unutmuşum, artı olarakta çemberin merkezinin (200,200) olduğunu söylemiş bu da koordinata 200 olarak eklenir her iki eksende.
-
x=r.cosa y=r.sina yöntemi ile buluyorum zaten ilk mesajımda onu da belirtmeye çalıştım ama, herhalde derdimi iyi anlatamamışım. Daha az işlem yaparak istediğimi bulabilir miyim acaba diyerekten açmıştım konuyu ama neyse, böyle de halledicez artık.
@Ozan kızma aga aceleye geldi özen gösteremedim yazıya, ikinci defa okumayı bırak cümlelerin yarısını yazıp diğer yarısını 5 dakika sonra yazdığım oldu. Yine de birkaç kişi anlayabilmiş, öneriler için sağolsun herkes.
