Введение в программирование трехмерных игр с DX9

       

Взаимное расположение точки и плоскости


Взаимное расположение точки и плоскости

Формула (8) в основном используется для проверки местоположения точки относительно плоскости. Предположим, нам дана плоскость (n, d), и мы хотим узнать как точка p расположена относительно этой плоскости:

Если n Ч p + d = 0, то точка p принадлежит плоскости.

Если n Ч p + d > 0, то точка p находится перед плоскостью в положительном полупространстве плоскости.

Если n Ч p + d < 0, то точка p находится за плоскостью в отрицательном полупространстве плоскости.

ПРИМЕЧАНИЕ

Если длина вектора нормали плоскости n равна единице, nЧp + d — это наименьшее расстояние от плоскости до точки p.

Приведенная ниже функция библиотеки D3DX вычисляет значение n Ч p + d для заданных плоскости и точки:

FLOAT D3DXPlaneDotCoord( CONST D3DXPLANE *pP, // плоскость CONST D3DXVECTOR3 *pV // точка );

// Проверка местоположения точки относительно плоскости D3DXPLANE p(0.0f, 1.0f, 0.0f, 0.0f);

D3DXVECTOR3 v(3.0f, 5.0f, 2.0f);

float x = D3DXPlaneDotCoord(&p, &v);

if( x приблизительно равно 0.0f ) // v принадлежит плоскости if( x > 0 ) // v в положительном полупространстве if( x < 0 ) // v в отрицательном полупространстве

ПРИМЕЧАНИЕ

Мы говорим «приблизительно равно», чтобы напомнить об особенностях сравнения чисел с плавающей точкой. Обратите внимание на примечание в разделе «Равенство векторов».

ПРИМЕЧАНИЕ

Существуют похожие на D3DXPlaneDotCoord методы D3DXPlaneDot и D3DXPlaneDotNormal. Их описание можно посмотреть в документации DirectX.

Содержание раздела