Привет
У меня есть программа, в которой вы перетаскиваете круги на сцене, используя JavaFX.Я не хочу, чтобы круги сталкивались друг с другом, поэтому я добавил алгоритм столкновения, чтобы проверить, что теперь работает.Что меня озадачивает, так это то, что я хочу сделать потом.
Если два круга перекрываются, я хочу сделать вектор между серединой двух и преобразовать перемещенный круг в направлении вектора, пока они больше не перекрываются.
for (Stone stn:getCurrentScenario().getStones()) {
if (stn.circle == circle) continue;
double x1 = stn.circle.getTranslateX();
double y1 = stn.circle.getTranslateY();
double r1 = stn.circle.getRadius()+stn.circle.getStrokeWidth();
double x2 = circle.getTranslateX();
double y2 = circle.getTranslateY();
double r2 = circle.getRadius();
double distSq = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
double radSumSq = (r1 + r2) * (r1 + r2);
if (!(distSq != radSumSq && distSq > radSumSq)) {
System.out.println("Collision.");
// Transform "circle".
}
}