Clark Kent, не работает эта формула, вот пример функции, шары начинают проходить сквозь друг друга, что-то меняется что-то нет, один может встать, полностью переписал. Уже 3 раз пишу движок, и 3 раз на одном встреваю, раньше использовал углы относительно ОХ, было 100500 операций но хоть отбиться могли иногда, сейчас с векторами пытаюсь, но даже сам что формулу вывел не могу обратно спроецировать с нормали на у0х.
Примерно так будет, primeX1,primeX2 -проекции на нормаль и перпендик. ей.
Collision.calculate =function(ball1,ball2){
var dx,dy,dr,cosA,sinA,primeX1, primeY1, primeX2,primeX2, p,v, newX1,newX2;
dx = (ball1.velocity.dx - ball2.velocity.dx);
dy = (ball1.velocity.dy - ball2.velocity.dy);
dr = Math.sqrt(dx*dx+dy*dy);
cosA=dx/dr;
sinA=dy/dr;
primeX1 = ball1.velocity.dx*cosA + ball1.velocity.dy*sinA;
primeX2 = ball2.velocity.dx*cosA + ball2.velocity.dy*sinA;
primeY1 = ball1.velocity.dy*cosA - ball1.velocity.dx*sinA;
primeY2 = ball1.velocity.dy*cosA - ball1.velocity.dx*sinA;
//p=mass*primeX1 + mass2*primeX2;
//v=(primeX1-primeX2);
// v2f=(p+v*mass1)/mass1+mass2;
//v1v22f-primeX1+primeX2;
//v1f=v1f
[primeX1,primeX2]=[primeX2,primeX1];
ball1.velocity.set(primeX1,primeY1,cosA,sinA);
ball2.velocity.set(primeX2,primeY2,cosA,sinA);
}
Clark Kent, на сайте https://codeforgames.ru/razrabotka-igr-v-action-sc...
который вы мне, благодарю, дали в формулах под номером "2" Проекции линии шара1 шара2 на ось перпендикулярную
yvelyprimeY = y * cosA - x*sinA, почему там минус? А при расчете xvelyprimeX стоит плюс.
Если там минус, то проекции не правильно нарисованы, тогда итоговое yvelyprime = 0 . Либо я не догоняю чего-то, мне просто нужно полностью на 100% разобраться. А то в формуле что я смог вывести очень много операций, в разы больше чем в реализациях что видел, но не до конца разобрался из-за слишком большого числа калбеков( то есть передачи промежуточного результата от одной функции к другой)
Clark Kent, не совсем понятно, в формуле изменения скоростей нужно несколько раз туда сюда проецировать векторы скоростей на ось нормали и тангенциальную ей, обмениваться нормальной скоростью, и получается очень большое число операций, что мне не нравиться,
а здесь не понятно что за *0.5 почему 0.5, не вижу реальной физики, хотя могу и ошибаться.
Moskus, вопрос не в этом даже, а в том как быстро все да же ели связные статьи так же как программно обновляются.
Пример, упал самолет, и сразу же как только пришел список жертв, у одной биографии из 100 тысяч появилась поправка, что его родственник попал в аварию. Уверен что пример имеет место быть. Сам натыкался на что - то похожие не раз за 10 лет.
делаю так же, но проверяю по своему квадрату и еще 8 квадратам вокруг этого, квадраты размером 4R на 4R , где R - радиус, а по какой формуле рассчитывать отталкивание и значение новых углов движения не пойму
GavriKos, не знаете а по какой форму рассчитывать угол столкновения двух шаров разных скоростей. Имеются скорости, углы от оси ox, то есть все проекции есть, а как высчитать под каким углом они разойдутся
Если вставить в createBoll, то если смотреть в браузере свойства ball.circle.x и тд то они разные у одного и того же обьекта, при том что между ними ни чего нету.
console.log("BALLL1111",ball);
g=ball.circle.x;
console.log("BALLL222",ball);
h=ball.circle.x;
console.log("G AND H ",g,h,g==h,typeof g)// G AND H 0 0 true
то есть разбить oxy на матрицу из [N x M] квадратов, и каждый квадрат проверять с окружностями из [n][m],[n-1][m], [n+1][m], [n][m+1], [n][m-1], [n+1][m+1], [n-1][m-1] квадратов? А каждый квадрат должен хранить какую-нибудь ссылку или число тех окружностей что в нем? Соответственно надо обновлять содержимое этих областей?
этот код не работает, или нужно еще библиотеку подключить, я хз какую
"terminate called after throwing an instance of 'std::runtime_error'
what(): locale::facet::_S_create_c_locale name not valid"
что за буква L перед кавычками, и почему у меня редактор не показывает ошибку
Можно еще спросить, что у меня с кодировками. Компилирую в ручную. QtCreater-ом и netbens. Везде вместо русских букв иероглифы, при выполнение открываеться окно cmd консоли вроде. Так же еще в netbens есть внутренняя консолька, в ней все выводятся русские символы. Кодировка cmd 1251 стоит.
Все функции не работают типо setlocale. В чем может быть ошибка, компилятор minGW
Это чисто пример, в java char 2байта,хотя конечно в байтах куда выгоднее. а я хочу написать простую субд что-то вроде HSQL c поддержкой select, create, insert, delete и ключами, и Интерпретатором