2013-11-11 4 views
4

enter image description hereПрыгающий мяч от круговой границы

Это формула я выяснил:

г = v - [2 (п · V)]

Это, как я применил

//Calculating normal 
    nx = 350 - SmileyReds[i].xpos ; 
    ny = 350 - SmileyReds[i].ypos ; 

    //new calc 
    v_newx = SmileyReds[i].xspeed - (2 *(nx * SmileyReds[i].xspeed + ny * SmileyReds[i].yspeed)) * nx; 
    v_newy = SmileyReds[i].yspeed - (2 *(nx * SmileyReds[i].xspeed + ny * SmileyReds[i].yspeed)) * ny; 

    SmileyReds[i].xspeed = v_newx; 
    SmileyReds[i].yspeed = v_newy; 

Но вместо того, подпрыгивая, шары исчезают, когда они попали на границу:

Полный src и просмотр http://jsfiddle.net/gj4Q7/4/

Благодарим за внимание, что любые советы приветствуются!

+0

Я не исправил все это, но я исправил несколько вещи http://jsfiddle.net/gj4Q7/3/ Почему так много циклов кстати? Я удалил большинство из них. – plalx

+0

@plalx Большое спасибо, я знаю, что петли не нужны, но я собирался их комбинировать в конце, когда отскок работал правильно, в вашей версии красные смайлики выходят из круга :(знаете ли вы, почему ? – Anarkie

+0

Да, вот почему я сказал «исправил несколько вещей». Возможно, если вы скажете мне, где вы нашли формулу, и где это объясняется, я мог бы помочь. – plalx

ответ

3

Я думаю, что нужно нормализовать нормальное :)

После

//Calculating normal 
nx = 350 - SmileyReds[i].xpos; 
ny = 350 - SmileyReds[i].ypos; 

вставки

var len = Math.sqrt(nx * nx + ny * ny); 
nx = nx/len; 
ny = ny/len; 

Вы можете видеть, что вы можете в противном случае легко получить значение в диапазоне от 350 * 350 для скорости, катапультируя ваши объекты в космос ...

+0

Да, я также нашел это позже, теперь проблема в том, что вы видите на обновленной скрипке, почему красные смайлики, придерживающиеся границы круга через какое-то время, так ли это должно работать? Когда я меняю на вкладке я вижу смайлики вне круга ... – Anarkie

Смежные вопросы