Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.13;
Скачать: CL | DM;

Вниз

D3D, Местоположение точки   Найти похожие ветки 

 
Pa5ha   (2004-04-02 15:46) [0]

Как определить местоположение точки на поверхности, куда она будет выведена с помощью Direct3D? Т.е. двумерные координаты.


 
Sapersky ©   (2004-04-02 17:44) [1]

D3DXProject или вручную:

function VectorMulMat(const vec: TVector; const mat: TMatrix): TVector;
begin
 Result.x := mat._11*vec.x + mat._21*vec.y + mat._31*vec.z + mat._41;
 Result.y := mat._12*vec.x + mat._22*vec.y + mat._32*vec.z + mat._42;
 Result.z := mat._13*vec.x + mat._23*vec.y + mat._33*vec.z + mat._43;
end;

function VectorMulMatEx(const vec: TVector; const mat: TMatrix): TVector;
Var w : Single;
begin
 w := mat._14*vec.x + mat._24*vec.y + mat._34*vec.z + mat._44;

 Result.x := ( mat._11*vec.x + mat._21*vec.y + mat._31*vec.z + mat._41 ) / w;
 Result.y := ( mat._12*vec.x + mat._22*vec.y + mat._32*vec.z + mat._42 ) / w;
 Result.z := ( mat._13*vec.x + mat._23*vec.y + mat._33*vec.z + mat._43 ) / w;
end;

function VectorProject(Const Src : TVector;
                      Const WorldMat, ViewMat, ProjMat: TMatrix;
                      Const HalfViewSize : TPoint): TVector;
Var v : TVector;
begin
v:=VectorMulMat(Src, WorldMat);
v:=VectorMulMat(v, ViewMat);
v:=VectorMulMatEx(v, ProjMat);

Result.x:=(v.x + 1) * HalfViewSize.x;
Result.y:=(1 - v.y) * HalfViewSize.y;
Result.z:=v.z;
end;

HalfViewSize - половина размера окна вывода.
Способ не самый оптимизированный - если вершин много, лучше сначала перемножить друг на друга матрицы, оформить всё как одну функцию и т.д.


 
Pa5ha   (2004-04-06 18:56) [2]

Спасибо.



Страницы: 1 вся ветка

Текущий архив: 2004.06.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.046 c
3-1085203949
Крутыш
2004-05-22 09:32
2004.06.13
Где найти инфу на русском языке


1-1086241616
Strazh
2004-06-03 09:46
2004.06.13
Visible:=false в form.create ???


1-1086044926
Dark Man
2004-06-01 03:08
2004.06.13
работа с dll вызов процедур программы из dll


3-1085300673
VflowerW
2004-05-23 12:24
2004.06.13
Работа с TreeView


14-1085212962
Ozone
2004-05-22 12:02
2004.06.13
Алгоритм сравнения кодов