2013-12-21 4 views
2

Я недавно начал играть с холстом, увидев, как легко это может быть. Мой первый проект состоял в том, чтобы сохранить круг в своих границах, когда он движется. Я сделал еще несколько вещей, связанных с движением кругов, и теперь ...Определение точки и угла пересечения двух окружностей.

В настоящее время я работаю над отскоком двух кругов друг от друга, когда они попадают. Вы можете увидеть пример этого: http://jsfiddle.net/shawn31313/QQMgm/7/

Однако я хотел бы использовать немного больше физики реального мира. В настоящий момент, когда круги ударяют друг друга, они просто меняют свой путь.

Как показано здесь:

// Dont be confused, this is just the Distance Formula 
    // We compare the distance of the two circles centers to the sum of the radii of the two 
    // circles. This is because we want to check when they hit each other on the surface 
    // and not the center. 
    var distance = Math.sqrt(Math.pow(c1.x - c2.x, 2) + Math.pow(c1.y - c2.y, 2)); 
    var r1  = c1.rad; 
    var r2  = c2.rad; 
    if (distance < r1 + r2) { 
     // Change the slope of both circle 
     // I would like to figure out a more effecience way of bouncing the circles back 
     // However, I have no idea how to determine the angle the ball was struck, 
     // and with that information bounce it off at that angle 
     c1.xi = -c1.xi; // path is reversed 
     c1.yi = -c1.yi; 
     c2.xi = -c1.xi; 
     c2.yi = -c1.yi; 
    } 

Тем не менее, я хотел круги идти в обратном направлении определяется точкой и угла пересечения.

Я только в 9 классе и не знаю, как выглядит формула для чего-то подобного. Но я знаю, что это возможно, потому что такая физика присутствует во многих играх. Примером может служить игра с 8 мячами. Когда шарики ударяют друг друга, они перемещаются по столу в соответствии с тем, как шары ударяют друг друга.

Я был бы признателен за любые советы о том, как это сделать или если я должен подождать, пока у меня не будет более сильного понимания физики и математики в целом.

+0

Если круги имеют одинаковую массу и скорость, то скорости просто меняются. Но если скорости разные, ситуация усложняется. – Teepeemm

+0

@Teepeemm Спасибо за комментарий. Но должен ли угол пересечения материи? – Shawn31313

+0

Я так не думаю. После Pixou мы можем повернуть все (по нашему мнению, по крайней мере), чтобы центр масс двигался вправо. Поскольку совпадение массы и скорости, это означает, что вертикальная составляющая скоростей точно противоположна. Затем, когда круги попадают, это похоже на то, что они отскакивают от горизонтальной стены, так что горизонтальная скорость не изменяется, а вертикальная скорость отрицается. Но это точно скорость от другого круга. Отключите все, и вы вернетесь в рамку, где вы начали. – Teepeemm

ответ

2

Слишком плохо, мы не можем нарисовать очень простую схему. Что касается физики, то, вы знаете, что суммарный импульс сохраняется, см http://en.wikipedia.org/wiki/Momentum

Существует хорошая иллюстрация и формулы здесь http://en.wikipedia.org/wiki/Elastic_collision#Two-_and_three-dimensional можно упростить формулы, если два объекта имеют одинаковый вес.

так что давайте рассмотрим систему отсчета, в которой c2 зафиксирован и центр в (0,0). скорость c1 в этой ссылке будет:

c1.xfi=c1.xi-c2.xi 
c1.yfi=c1.yi-c2.yi 

Теперь у вас есть столкновение, когда расстояние между ними равно сумме радиуса. Рассмотрим касательную плоскость двух окружностей.

Теперь вам нужно разложить скорость c1 в касательную компоненту, которая сохраняется, и перпендикуляр (по линии между c1 и c2), которая передается на c2.

Затем вам нужно вернуться к исходной системе отсчета.

(жаль, что я не давал вам точные формулы, но они находятся на ссылок, предоставленных)

0

Если бы я делал это сам, я бы реализовать движение с помощью Newtons law of restitution. По сути, это коэффициент, который связывает скорость и скорость разделения двух частиц до/после удара и имеет значение, которое зависит от свойств материала ваших частиц.

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

Импульс частиц сохраняется перпендикулярно к линии центров (поэтому скорости в этом направлении остаются неизменными при столкновении), а закон реституции применяется к скоростям, параллельным линии центров. Таким образом, если вы исправите коэффициент реституции (он должен быть от 0 до 1) до некоторого значения по вашему выбору, вы можете использовать этот закон для расчета скоростей разделения вдоль линии центров ваших частиц после столкновения с использованием значения подхода скорости.

Если ваши частицы имеют одинаковую массу и радиус, расчеты упрощаются. Вы можете моделировать упругие столкновения, установив коэффициент в 1 (это означает, что скорость разделения частиц такая же, как скорость захода на посадку), что, вероятно, является самым легким местом для запуска. Изменяя значение, вы увидите различное поведение частиц после столкновения.

Извините, что не в состоянии написать все это в формуле для вас, но это не совсем подходящее место для этого. Живя в Великобритании, я понятия не имею, что такое «9-й класс», поэтому я не могу оценить, слишком ли вышеперечисленное для вашего нынешнего уровня образования. Здесь, в Великобритании, этот тип проблемы обычно рассматривается на уровне математического образования уровня А.

Надеюсь, хотя это даст вам указание на условия и темы, которые вы можете научить самостоятельно/исследования, чтобы достичь своей цели.

+0

9-й класс составляет около 14 лет. Математика 9-го класса - это что-нибудь от доалгебры через алгебру 2 или геометрию или тригонометрию. – Teepeemm

+0

@Teepeemm О, тогда все это, вероятно, слишком продвинуто. – mathematician1975

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