2010-11-16 16 views
12

Bu dairenin iki nokta ve dairesi var. Bu noktalar arasında bir yay çizmek istiyorum. Yöntem drawArc basittir ve amacım uymuyor. Herkes yardım eder?2 nokta ve dairenin ortası çizme yayı

+0

Bu ev ödevi mi? Öyleyse lütfen bunu etiketleyin. – javamonkey79

+0

Bu özellik, Arc çizmesi için meny fonksiyonlarının bulunduğunu biliyorum, ancak – CarolusPl

cevap

2

Graphics.drawArc aşağıdaki parametreleri bekler:

  • x
  • y
  • genişliği
  • yüksekliği
  • startAngle
  • arcAngle

Ark başlangıcınız ve bitiş noktalarınız göz önüne alındığında, arkın çizileceği bir sınırlayıcı kutu hesaplanabilir. Bu size parametre sağlamak için yeterli bilgi verir: x, y, width ve height.

İstediğiniz açıyı belirlemediniz, bu yüzden keyfi olarak birini seçebilirsiniz.

21

Sen Canvas.drawArc kullanabilirsiniz, ancak bunun ihtiyacı argümanlardır hesaplamak gerekir:

dairenin merkezi olduğunu (x0, y0) ve yay senin iki nokta (x1, y1 içerdiğini düşünelim) ve (x2, y2). Daha sonra yarıçap: r = sqrt ((x1-x0) (x1-x0) + (yı-y0) (y1-y0)). Bu nedenle:

int r = (int)Math.sqrt((x1-x0)*(x1-x0) + (y1-y0)*(y1-y0)); 
int x = x0-r; 
int y = y0-r; 
int width = 2*r; 
int height = 2*r; 
int startAngle = (int) (180/Math.PI*atan2(y1-y0, x1-x0)); 
int endAngle = (int) (180/Math.PI*atan2(y2-y0, x2-x0)); 
canvas.drawArc(x, y, width, height, startAngle, endAngle); 

İyi şanslar!

+0

FYI: Bu değişken, int 'değişkenleri yerine 'float' kullanılırsa biraz daha iyi çalışır. PI = 3.14, Kare Kökler, vb. Eğer int türlerine yapışırsanız çok fazla sıfır oluşturuyor olabilirsiniz. Teoride – jp2code

+4

evet. Ancak, drawArc() int parametrelerine sahiptir. – botismarius

+0

Bu benim için C# içinde mükemmel çalışıyor .. Teşekkürler! – Abhishek

İlgili konular