Геометрические преобразования
Уравнения прямой и плоскости
Уравнение прямой на плоскости в декартовой системе координат можно задать уравнением вида
для случая, когда прямая не параллельна оси OY, и уравнением для вертикальной прямой. Но прямая может быть также задана и другим способом. Достаточно указать вектор направления этой прямой и какую-нибудь точку , лежащую на этой прямой. При этом точки, лежащие на прямой, могут быть заданы с использованием векторных операций в виде так называемого параметрического уравнения прямой в котором параметр t пробегает все значения числовой прямой. Координаты точки, соответствующей некоторому значению этого параметра, определяются соотношениями( 3.4) |
Прямую в пространстве тоже можно задавать параметрическим уравнением, которое очень легко получить из предыдущего простым переходом от двумерных векторов к трехмерным. Пусть . Тогда это уравнение будет определять прямую в пространстве, а координаты точек этой прямой будут определяться формулами
( 3.5) |
Как известно из элементарной геометрии, через любые три точки в пространстве проходит плоскость. С другой стороны, через каждую точку плоскости можно провести единственную прямую, перпендикулярную данной плоскости. При этом все эти прямые будут параллельны друг другу, а значит, они имеют общий вектор направления. Этот вектор будем называть нормалью к плоскости. Если длина вектора равна единице, мы будем называть его единичной нормалью. В компьютерной графике часто приходится решать задачу построения нормали к некоторой плоскости, заданной тремя точками, а также задачи пересечения прямой с плоскостью и двух плоскостей.
Плоскость в пространстве можно задать, указав вектор нормали к ней и какую-либо точку, принадлежащую данной плоскости. Пусть - вектор единичной нормали, а - некоторая точка на плоскости. Тогда для любой точки , лежащей на плоскости, вектор будет ортогонален вектору нормали, а следовательно, выполняется равенство
Раскрывая это выражение в координатном виде, получаем Теперь перепишем это уравнение в виде( 3.6) |
В алгоритмах компьютерной графики довольно часто приходится сталкиваться с задачей построения плоскости, проходящей через три заданные точки. Пусть три точки , и , не лежащие на одной прямой, имеют координатами и . Для канонического уравнения необходимо построить нормаль к плоскости, что легко можно осуществить, используя операцию векторного произведения. Поскольку векторы и лежат в искомой плоскости, то вектор будет ортогонален этой плоскости. Пусть , тогда уравнение плоскости будет иметь вид
Остается определить значение . Так как точка принадлежит этой плоскости, то ее координаты должны удовлетворять полученному уравнению. Подставим их в уравнение и получим
следовательно и после подстановки окончательно получим:( 3.7) |
В большинстве алгоритмов, использующих плоскости, достаточно знать нормаль к ней и какую-либо точку, принадлежащую плоскости. Очевидно, что по аналогии можно вывести каноническое уравнение прямой на плоскости, если задана нормаль к ней и принадлежащая прямой точка.
Пересечение луча с плоскостью и сферой
Прямая на плоскости и в пространстве является бесконечной в обе стороны. Лучом называется полупрямая, т.е. множество всех точек прямой, лежащих по одну сторону от заданной ее точки, называемой началом луча. Луч будем задавать в параметрическом виде, как это было описано в одном из предыдущих разделов. Пусть - направляющий вектор прямой, а - начальная точка. Тогда координаты точек луча будут определяться формулами
( 3.8) |
Будем считать, что направляющий вектор единичный, т.е. .
Сначала рассмотрим задачу о нахождении точки пересечения луча с плоскостью, заданной каноническими уравнением
( 3.9) |
Вектор нормали тоже будем считать единичным. Сначала надо определить значение параметра t, при котором луч пересекает плоскость. Для этого подставим координаты из формулы (3.8) в уравнение (3.9) и получим
откуда легко определить, что луч пересекает плоскость в точке со значениемОчевидно, что такая точка существует только при условии . В свою очередь, эта величина обращается в нуль только в случае, когда векторы и ортогональны друг другу.
Пусть теперь нам задана сфера с центром в точке и радиусом . Тогда уравнение сферы будет иметь вид
Подставив сюда координаты луча из уравнения (3.8), получим, что параметр, при котором луч пересекает сферу, должен удовлетворять квадратному уравнению
где . Определим корни этого уравнения. Если дискриминант , то корни существуют. Их может быть либо два , либо один . В первом случае имеем две точки пересечения, во втором - одну (луч касается сферы). Соответствующие значения параметра определяются соотношением