2008-09-16 6 views
12

Apple'ın CoreGraphics kitaplığı bir yayı tanımlamak için iki işlevi tanımlar.CGPathAddArc vs CGPathAddArcToPoint

  • CGPathAddArc, bir merkez noktasını, yarıçapı ve çift açıları temel alan bir yay ekler.
  • CGPathAddArcToPoint, bir yarıçap ve bir çift tanjant çizgisine dayalı bir yay ekler.

Ayrıntılar the CGPath API reference'da açıklanmıştır. Neden iki fonksiyon? Basit kolaylık? Bir diğerinden daha verimli mi? Bir diğeri açısından tanımlanmış mı?

cevap

8

Birincisi, bir çemberin bir bölümünü (gerçekten, birinin bir yaklaşımı) alırken, ikincisi bir Bézier yolu oluşturduğunuz gerçeğini ortaya çıkarır. Aslında çizdiğin şeye bağlı olarak, biri ya da diğeri daha uygun olabilir. CGPathAddCurveToPoint için her ikisini de kolayca düşünebilirsiniz.

+0

CGPathAddArcToPoint'in dairesel olmayan bir eğri çizebileceğini ima etmek ister misiniz? Bütün yayların bir dairenin parçaları olduğunu sanıyordum. – benzado

+0

Bir daire tam olarak bir Bezier eğrisi ile tanımlanamaz. –

63

CGContextAddArc yapar:

addArc

kırmızı çizgi çekilecek budur nerede, sA startAngle olduğunu eA endAngle, r radius ve x ve y x ve y bulunmaktadır. Eğer bir önceki noktanız varsa, fonksiyon bu noktadan yayın başlangıcına doğru ilerleyecektir (bu çizgiye dikkat etmediğiniz sürece yay ile aynı yönde gitmeyecektir). Böyle

CGContextAddArcToPoint çalışır:

P1 yolu, x1, x2, y1, y2 maç fonksiyonları x1, x2, y1, y2 ve r mevcut noktasını ise addArc

radius olduğunu

. Ark, geçerli nokta ile (x1, y1) arasındaki çizgi ile aynı yönde başlar ve (x1, y1) ve (x2, y2) arasındaki yönde sonlanır. (x2, y2) numarasına uymayacak Bu, dairenin sonunda duracak.

+0

Mükemmel! Bahse girerim bunlar sadece iki değil. Diğer API'lerin diyagramlarını nerede bulabilirim? – CopperCash

+3

@CopperCash Seni hayal kırıklığına uğrattığım için özür dilerim, ama bildiğim iki tanesi bunlar, ve onları kodladım (çoğunlukla, bir resim editörü ile etiketler ve noktalar eklendi). –

İlgili konular