2016-11-25 38 views
5

是否有可能讓一些精靈/對象自己複製並彎曲曲線? 我做了一個形象說明我的意思:如何使幾何圖形遵循曲線?

road

這裏的曲線,可能是貝塞爾路徑是綠色和幾何顯示爲黑色。我想要精靈或對象(在左邊)複製自己並將其頂點與最後一個副本合併,而最後兩個頂點跟隨曲線。 如果是,該怎麼辦?有沒有關於這樣的東西的任何文檔?你做過這樣的事嗎?怎麼樣?

編輯:我不想讓精靈或對象通過路徑移動,但有一種自我複製併合並自己與它的副本。

+0

可能重複[如何使雪碧跟隨貝塞爾曲線](http://stackoverflow.com/questions/28341998/how-to-make-sprite-follow-bezier-curve) – ebby94

+0

這是爲了使軌道/路? – Confused

回答

2

是的,你想要做的事情可以工作,而你的繪圖展示了它的工作原理。僞代碼看起來像這樣:

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 
} 

要計算每個四元組,您需要在開始點和結束點生成垂線。然後,你的四方有4點。

請注意,我通過假設只有一個貝塞爾函數來簡化它。通常情況下,你將其中許多連接在一起,所以迭代它們會比上面所說的更復雜一點,但它不應該太難。

另請注意,如果您有非常狹窄的彎道或者曲線自行迴繞,您可能會看到不好的結果。不過,如果你自己生成曲線,你可能會避免這種情況。

+0

你能解釋一下不同的變量是什麼意思嗎?例如什麼是startPt或prevPt?什麼是T?這是顯而易見的,但也許我不能弄明白,因爲英語不是我的第一語言 – Pietari

+0

另外,你如何把飛機放在曲線上? – Pietari

0

查看SCNShape,它從Bézier曲線生成一個SceneKit幾何。