?? viewfinder.cpp
字號:
// ViewFinder.cpp: implementation of the CViewFinder class.
#include "stdafx.h"
#include "ViewFinder.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CViewFinder::CViewFinder(VIEWFINDER viewFinder) : m_viewFinder(viewFinder)
{}
CViewFinder::~CViewFinder()
{}
//將觀察坐標系下的點變換到屏幕坐標系
//事實上, 這個變換適合于視點在Z坐標上的情形
//vertex----觀察坐標系下的點
POINT CViewFinder::Perspective(VERTEX3D vertex)
{
float xe = vertex.x, ye = vertex.y, ze = vertex.z;
//對于ze = 0.0f的情況, 這里只作簡化處理:
if(ABS(ze) < 0.00001f) ze = 1.0f;
//屏幕上的點
POINT pt;
pt.x = (int)((xe * m_viewFinder.fDistView) / ze * m_viewFinder.xScale
+ m_viewFinder.ptCenter.x);
//右手平面直角坐標系變為左手直角坐標系
pt.y = (int)((-ye * m_viewFinder.fDistView) / ze * m_viewFinder.yScale
+ m_viewFinder.ptCenter.y);
return pt;
}
//將觀察坐標系下的點變換到屏幕坐標系
//vertex----觀察坐標系下的點
POINT CViewFinder::Perspective(HOMOCOORD vertex)
{
VERTEX3D v;
float w = vertex.w;
//對于一個無窮遠點
if(ABS(w) <= 0.00001f)
{
v.x = vertex.x;
v.y = vertex.y;
v.z = 1000000.0f;
}
else
{
v.x = vertex.x / w;
v.y = vertex.y / w;
v.z = vertex.z / w;
}
return (Perspective(v));
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -