2013-04-17 22 views
5

iPhone'da openGL/Cocos2d'de iki nokta arasında esnek/esnek bir çizgi çizmeyi denemeye çalışıyorum. çizgi uzadıkça "bant" olsun en ince bu"Sıkı" çizgi çizmek için yaygın bir teknik var mı?

enter image description here

gibi bir şey. iOS, Mail.app'ta hedeflediğim aynı tekniği kullanıyor, yenilemek için çekin.

Her şeyden önce, bu tür bir şeyin adı var mı?

İlk düşüncem, başlangıç ​​ve bitişik dairelerin yarıçapı üzerinde, ikisi arasındaki açıya göre bir nokta çizmek ve bir kontrol noktası olarak mesafeyi/2'yi kullanarak bir kuadratik bezier eğrisi çizmekti. Ama ben matematik yapmıyorum, bu yüzden yolun kalınlığını ayarlayacak kontrol noktasını nasıl yerleştireceğimi anlamaya çalışıyorum.

Ancak daha büyük bir sorun, şekli bir renkle doldurmam gerektiğidir ve bu, OpenGL bezier eğrilerinde, eğriler bir parçanın parçası görünmediğinden beri anlayabildiğim gibi görünmüyor. Doldurulabilecek şekli.

Bu yüzden bir nokta dizisi kullanarak oluşturulmuş bir spline kullanarak baktım, ancak bu, yol kenarındaki tüm noktaların nerede olduğunu bulmak zorunda olduğum için yeni bir matematiksel acı dünyasına açılıyor. Bu tavşan deliğinden aşağı inmeden önce, baktığımda daha basit bir şey olup olmadığını veya herhangi birinin beni en etkili tekniğe yönlendirebileceğini merak ediyorum.

+0

Sadece bir düşünce: Burada spline/bezier'e ihtiyacınız olduğunu düşünmüyorum. Eğriliğe bakın, her bir uç nokta dairesinin en üstünden ve altından geçen çok büyük bir dairenin küçük bir parçası gibi görünür. Bu yüzden belki de sıkılmış parçayı dairelerle "damgalamak" için bir yol bulabilirsiniz. İki son nokta ne kadar gerilirse, damga dairelerinin yarıçapı o kadar küçük olur. – LearnCocos2D

+0

Şerefe, Her ne kadar varsayılan iOS'a yaklaştıkça "yenilemek için" blob şeyini yenilemek, kesinlikle bu yaklaşımı kullanmıyor. Ama öneriye biraz araştırma yapacağım. – gargantuan

+0

Bu şey için bir isim buldunuz mu? –

cevap

2

Ben matematiksel olarak hesaplayarak dışındaki kişilerin kullanabileceği bir "ortak" tekniği, ancak bu projenin SlimeyRefresh, bunu gerçekleştirmek için nasıl iyi bir örnektir konusunda emin değilim.

İlgili konular