2015-10-05 107 views
1

上我想繪製曲線並附加一個目的是它。是否有可能創建分數(從0.0到1.0),這使得我的對象在路徑上移動?當分數爲0時,對象處於開始位置,當0.5處於中途時,最後是1.0時,對象處於末尾。當然,我想要一個彎曲的路徑,而不是一條直線:)是否可以在PaintCode中完成?PaintCode - 移動對象的路徑

+0

不知道,如果是要問,雖然在正確的地方,但我已經試過相同,得出的結論:沒有,這是不可能的內PaintCode。 – Leandros

+0

這是一種編程語言,所以完全有可能,但你錯過了重要的信息。沿着路徑的速度應該是線性的,基於物理的還是「無論」?因爲你這個標記與「貝塞爾」,這是一個完全非線性曲線:對象一起貝塞爾曲線的移動將這樣做相當快沿直線段,減緩成正比的路徑彎曲。雖然參數=距離值0 = 0%,0.5 = 50%和1 = 100%根據定義是正確的,但其他參數=距離值對貝塞爾曲線來說都不是真的,所以只給出這三個值是不夠的。 –

+0

但我不需要動畫。我想使用它作爲一個可見的進度條:)只是想設置值0.5,有我在貝塞爾 –

回答

0

基於這樣的事實,你要沿着曲線行走使用的直線距離,事貝塞爾曲線是可怕的,你需要建立線性映射你自己。這很簡單,但:

當你繪製曲線時,也建立一個查找表,例如100點(t = 0,t = 0.01,t = 0.02等)對曲線進行一次採樣。在僞代碼:

lut = []; 
lut[0] = 0; 
tlen = curve.length(); 
for(v=0; v<=100; v++) { 
    t = v/100; 
    clen = curve.split(0,t).length(); 
    percent = 100*clen/tlen; 
    lut[percent] = t; 
} 

這可能會留下空白,你的LUT - 您可以修復這些作爲輔助步驟或剛剛離開他們,做你的陣列上的二進制掃描,找到最近的「具有值「百分比。然後,當你需要以某個百分比值顯示你的進度時,你只需要查找相應的t值:假設你需要顯示83%,你可以查找lut[83],並以你提供的值繪製你的對象。

2

如果您只需要作爲進度條,則可能在PaintCode中。訣竅是用虛線行程非常大的差距然後只需更改短跑

Example

然後,只需連接一個變量,你做。


編輯:關於在原來的職位討論,該解決方案使用爲單位,所以它會沿着曲線平均分配,無論怎樣彎曲的貝塞爾是。