2016-04-01 14 views
0

Çevremdeki çizgiyi taşımak için lerp() işlevini kullanıyorum ancak çalışmıyor. Daire, amt parametresinin, lerp() işlevi için ne olduğuna bağlı olarak, her zaman bir yere gider. Eğer amt için 0.5 koyarsam, o zaman çember çizginin yarısına kadar yerleştirilir, fakat hareket ettiğini göremiyorum ya da çemberin çemberinin boyunu aşağı doğru hareket etmesini tamamlamıyorum. Yani herkes daireyi çizgiden aşağı çekmeme yardım edebilir mi?Satır Boyunca Taşımak İçin Hareketli Daire

float x1,y1,x2,y2; 
float cx,cy; 
float x4,y4; 

void setup() { 
    size(600,600); 
    x1 = 200; 
    y1 = 150; 
    x2 = 300; 
    y2 = 250; 
    cx = 450; 
    cy = 200; 
} 

void draw() { 
    background(60); 
    stroke(220); 
    line(x1,y1,x2,y2); 
    noFill(); 
    noStroke(); 
    // calculate the point 
    float k = ((y2-y1) * (cx-x1) - (x2-x1) * (cy-y1)) 
/((y2-y1)*(y2-y1) + (x2-x1)*(x2-x1)); 
    float x4 = cx - k * (y2-y1); 
    float y4 = cy + k * (x2-x1); 
    stroke(0); 
    line(cx,cy,x4,y4); //line connecting circle and point on line 

    float x = lerp(cx, x4, .1); 
    float y = lerp(cy, y4, .1); 

    fill(255, 0, 175); 
    ellipse(x4,y4, 8,8); 

    fill(175, 0, 255); 
    ellipse(x, y, 50, 50); 
} 
+0

Sorunuzu anlayamadım ama siyah çizgide daireyi canlandırmak istediğinize eminim? Eğer öyleyse, draw fonksiyonundaki amt parametresinin değerini değiştirmeniz gerekir. Her yinelemeli artışlarla bunun için bir değişken kullanmanız yeterlidir. – michaPau

+0

Teşekkür ederiz! Çalıştırdım! –

cevap

1

Sen lerp() işlevi geçirilen amount değeri için değişken kullanmak gerekir. Ardından, zaman içinde bu değişkeni zaman içinde çoğaltın:

float amount = 0; 
float speed = .001; 

void setup() { 
    size(500, 500); 
} 

void draw() { 

    float startX = 0; 
    float startY = 0; 
    float endX = width; 
    float endY = height; 
    float currentX = lerp(startX, endX, amount); 
    float currentY = lerp(startY, endY, amount); 

    background(0); 
    ellipse(currentX, currentY, 20, 20); 

    amount += speed; 

} 
İlgili konular