English Version            Русская версия

 [ Разделы сервера ]  [ Карта сервера ]  [ Новости сервера ] [ Обратная связь ]



xmov .+point.ymov*point.ymov); 4 var frames =dis/vel Этот шаг освежающе короток. Здесь мы вычисляем число кадров, необходимых шару, чтобы добраться из текущей позиции в точку, в которой он сталкивается с линией. Возвращаясь к главе по основам физики, мы вспоминаем, что distance = velocity*frames. Если мы решаем это уравнение для кадров, мы получаем frames = distance/velocity. Так что если мы найдем расстояние между текущим положением и точкой столкновения, и векторную скорость вдоль этой линии, то мы можем найти количество кадров, за которое она попадет туда! В строке 2 мы используем теорему Пифагора вновь для получения расстояния. В строке 3 мы используем ту же теорему еще один раз, для нахождения векторной скорости вдоль траектории. Наконец, в строке 4 мы получаем количество кадров как отношение расстояния и векторной скорости. Чтобы посмотреть более детально, как время (кадры) могут быть вычислены, смотрите файл line_ball_time_calculation.pdf в папке Chapter05. В шаге 4 мы проверяем физическую точку контакта, чтобы убедиться, что она находится в границах отрезка линии. 1 //Шаг 3 2 //теперь проверим есть ли контакт точки с отрезком линии 3 var slope2a =-1/tempLine.slope; 4 var b2a =y-slope2a*x; 5 //точка контакта 6 var xa =(tempLine.b-b2a)/(slope2a-tempLine.slope); 7 var ya =slope2a*xa+b2a; 8 if ((xa>tempLine.x1 &&xa<tempLine.x2) .||(xa<tempLine.x1 &&xa>tempLine.x2) .||((ya>tempLine.y1 &&ya<tempLine.y2) .||(ya<tempLine.y1 &&ya>tempLine.y2))){ 9 //в пределах границ отрезка 10 }else { 11 //не в границах отрезка 12 //установить значение frame1 13 var frames =1000; 14 } 15 return frames; Для нахождения координат точки контакта, мы представляем линию, проведенную через центр окружности и точку контакта. Цель состоит в нахождении наклона и координаты y точки пересечения этой линии, (что будет означать, что мы знаем все, что нам нужно) и тогда, имея эту информацию, посмотреть, где эта линия пересекает основную линию
Hosted by uCoz