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

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



y-slope2*point.x; 11 //точка пересечения 12 var x =(b2-tempLine.b)/(tempLine.slope-slope2); 13 var y =tempLine.slope*x+tempLine.b; На этом шаге мы ищем пересечение между траекторией шара и линией. Наклон траектории шара представляет собой отношение ее подъема на ее протяженность. Обратите внимание на строки 4-8. Если шар не имеет скорости в направлении x (0), то наклон равен или бесконечности, или минус бесконечности. Но поскольку наши вычисления выдают ошибку на бесконечности и минус бесконечности (и нигде больше), мы добавляем некоторую простую логику, которая устанавливает наклон или в 1,000,000 или в -1,000,000, если была обнаружена бесконечность или минус бесконечность, соответственно. (Мы используем 1,000,000 потому что это достаточно большое число, чтобы наше обнаружение столкновения было точным, но не достаточно большое, чтобы произошла ошибка вычислений.) Строки 9-13 должны выглядеть теперь знакомо – в них определяется пересечение между двумя линиями. Теперь мы перемещаемся на код ActionScript для шага 2. 1 //Шаг 2 2 //Угол перемещения шара 3 var theta =Math.atan2(point.ymov,point.xmov); 4 //Разность между углом линии и траекторией шара 5 var gamma =theta-tempLine.angle; 6 //изменить x и y 7 var sinGamma =Math.sin(gamma); 8 var r =point.radius/sinGamma; 9 //The ball's position at point of contact 10 var x =x-r*Math.cos(theta); 11 var y =y-r*Math.sin(theta); На этом шаге мы хотим выяснить, где шар должен быть (его x и y координаты), когда он впервые сталкивается с линией. Мы делаем это, используя тригонометрию, описанную ранее. Имена переменных такие же, как описанные ранее и соответствуют вычислениям. Строки 10 и 11 дают нам то, что мы ищем. Мы выполняем следующим шаг 4, до шага 3. Ниже представлен код ActionScript для этого шага. 1 //Шаг 4 2 var dis =Math.sqrt((x-point.x)*(x-point.x) .+(y-point.y)*(y-point.y)); 3 var vel =Math.sqrt(point.xmov*point
Hosted by uCoz