2016-11-25 46 views
5

Bazı sprite/nesnelerin kendini kopyalaması ve eğri içinde bükülmesi mümkün mü? Ben ne demek istediğimi göstermek için bir resim yaptı:Geometri bir eğriyi nasıl izler?

İşte

road

eğrisi, muhtemelen bir Bezier yolu yeşil ve geometri siyah gösterilir. Sprite'ın veya nesnenin (solda) kendisini kopyalaması ve son kopya ile köşeleri birleştirmesi ve son iki noktanın eğriyi takip etmesini istiyorum. Eğer öyleyse, nasıl yapılır? Böyle bir şey hakkında herhangi bir belge var mı? Böyle bir şey yaptın mı? Nasıl?

DÜZENLEME: Hareketli nesneyi veya nesnenin yol boyunca ilerlemesini istemiyorum, ancak kendi türünü çoğaltmak ve kopyalarıyla birleştirmek istemiyorum.

+0

Olası yinelenen [nasıl yapılacağını Sprite bezier eğrisini takip] (http://stackoverflow.com/questions/28341998/how-to-make-sprite-follow-bezier-curve) – ebby94

+0

bu bir parça yapmak mı/yol? – Confused

cevap

2

Evet, yapmak istediğiniz şey işe yarayabilir ve çiziminiz nasıl çalıştığını gösterir. Pseudocode şöyle görünecektir:

curveLength = <length of entire curve>; 
tileLength = <length of 1 tile>; 
currentLength = 0; 
while (currentLength < curveLength) 
{ 
    currentTileLength = 0; 
    startPt = prevPt = calculateBezierAt(0.0); 
    for (t = delta; (t < 1) && (currentTileLength < tileLength); t += delta) // delta is up to you. I often use 1/100th 
    { 
     nextPt = calculateBezierAt(t); 
     distance = distanceBetween(prevPt, nextPt); 
     currentTileLength += distance; 
     currentLength += distance; 
     prevPt = nextPt; 
    } 
    endPt = prevPt; 
    // Calculate quad here 
} 

başlangıç ​​ve bitiş noktalarında perpendiculars üretmek gerekir, her dörtlü hesaplamak için. Dörtlü için 4 puanın var.

Yalnızca tek bir bezer olduğunu varsayarak işleri basitleştirdiğimi unutmayın. Normalde, birçoğunun birbirine bağlı olması gerekir, bu yüzden yukarıda söylediğimden daha fazla yineleme yapmak biraz daha zordur, ama çok zor olmamalıdır.

Ayrıca, ya çok sıkı köşeleriniz varsa ya da eğri kendi üzerine geri dönerse, kötü sonuçlara neden olabilirsiniz. Muhtemelen, eğer eğrileri kendiniz üretiyorsanız, bundan kaçınacaksınız.

+0

Farklı değişkenlerin ne anlama geldiğini açıklayabilir misiniz? Örneğin startPt veya prevPt nedir? T nedir? Bu muhtemelen açık, ama belki ben İngilizce olarak benim ilk dilim değil bu şekilde çözemiyorum – Pietari

+0

Ayrıca, nasıl eğri üzerinde uçak yerleştiririm? – Pietari

0

Bir Bézier eğrisinden bir SceneKit geometrisi oluşturan SCNShape'ye bir göz atın. arasında