Во-первых, вы должны заметить, что центр шара не обязательно должен быть внутри круга, чтобы указать, что есть отражение или отскок.До тех пор, пока расстояние между центром шара и окружностью меньше радиуса шара, произойдет отскок.
Если радиус окружности равен R , а радиусшар равен r , все упрощается, если перейти к случаю, когда круг имеет радиус R + r , а шар имеет радиус 0. Для целей обнаружения столкновений и отражения / отражения, это эквивалентно.
Если у вас есть точка пересечения (увеличенного) круга и траектории мяча, вы можете легко вычислить нормальную N для круга в этой точке (это- единичный вектор в направлении от центра круга к точке столкновения).
Для входящего вектора V отраженный вектор равен V -2 ( N ⋅ V ) N , где ( N ⋅ V ) - точечное произведение.Для этой задачи входящий вектор V является вектором от точки пересечения до точки внутри окружности.
Что касается приведенной выше формулы отражения, ее относительно легко вывести с использованием вектораматематику, но вы также можете искать в Google такие термины, как " вычислить вектор отражения ".Знаки в формуле будут меняться с предполагаемыми направлениями V и N . Математический мир имеет происхождение , хотя, как уже отмечалось, знаки разные.