Как проверить пересекает ли сфера хотя бы одну из координат?
Мне дана сущность типа SphereEntity, которая имеет следующие поля:
int radius;Point point(int xCoordinate, int yCoordinate, int zCoordinate).
Необходимо создать метод boolean isCrossThoughtAnyAxis(SphereEntity sphere), проверяющий касается(пересекает) ли сфера хотя бы одну координатную ось.
Из уравнения (1) сферы я попытался вывести формулы для определения этих самых точек. Что-то получилось(2), но я ума не приложу каким образом это задать в коде.
Друзья, прошу вас не думать, что я обнаглевший дурачок, который хочет при первой неудаче получить готовое: сидел над этим не мало часов, но, к моему большому сожалению, ничего в голову не лезет.
Помогите, пожалуйста. Заранее спасибо за внимание.
Ответы (3 шт):
(пересекает) ли сфера хотя бы одну координатную ось.
R^2 - y0^2 - z0^2 >= 0 - пересекает ось X
и так далее.
прошу вас не думать, что я обнаглевший дурачок
Вы завоевали этой фразой мои симпатии. Поэтому отвечаю, а не посылаю читать учебник по аналитической геометрии за седьмой класс.
Пример для оси x.
Точка оси x, ближайшая к центру сферы - это точка с координатами (x0,0,0). Согласны?
Если ось x пересекает сферу, то и точка (x0,0,0) обязана лежать внутри шара, то есть расстояние от (x0,0,0) до (x0,y0,z0) должно быть меньше R
Другими словами, ось x пересекает сферу тогда и только тогдаy0*y0 + z0*z0 < R*R
В случае, когда y0*y0 + z0*z0 == R*R сфера касается оси x.
Я бы хотел пояснить более подробно, и начать, как начали вы - с уравнения сферы
Что такое ось X? Это множество точек, для которых
Значит, чтлбы получить точки пересечения сферы с осью X, нужно решить уравнение
или
Но слева стоит величина, которая не может быть отрицательна. Значит, решение сушествует тогда и только тогда, когда
А точки равны соответственно







