任务: 
1。读取DEM文件并绘制出来。
2。读取tif文件,贴在DEM上。
3。读取3D文件,将建筑物显示出来。
---
方向角:正北为0度,正负180度。
俯仰角:水平为0度,向上为正,正负90度。
横滚角:逆时针为正向。
---
OpenGL的坐标系与普通坐标系的一个区别就是z轴和y轴对换,而且普通坐标系的xy-Z轴是右手准则的,而OpenGL的xz-Y轴是左手准则。这两个问题很容易忘记,就会产生一些方向上的错误。

定向光定义的方向是和xyz三参数指定的方向相反的。

显示列表中glIsEnabled无效,还有其他一些gl函数也是无效的(蓝宝p365,红宝p191,197)。

gluPerspective(60.0, fAspect, 0.1, 10000.0);fAspect是float型,OnSize()中cx、cy都是int型,若直接cx/cy得到的fAspect是int型,这样就会使窗口大小连续变化时场景大小跳跃变化,窗口缩小到一定程度时由于cx/cy取整为0就使得窗口内看不到场景。
---
在sscanf等函数中%*d是跳过不读整型数,*就是跳过的意思。
---
在CMyWorkApp中声明CMyWorkView* m_pMyWorkView,初始化为NULL。
在MyWorkView.cpp和MyWorkDoc.cpp中extern CMyWorkApp theApp;可能需要#include "stdafx.h"。
在CMyWorkView构造函数中 theApp.m_pMyWorkView = this;
这样就能够在Doc类中用theApp.m_pMyWorkView这个指针来访问view类的public函数和变量了。
---
1。在ResourceView中插入IDD_FORMVIEW(Dialog下)。
2。为该资源创立基于CFormView或CXTResizeFormView(XTreme Toolkit的一个类)的派生类,比如命名为CFormBar。实现该类下所需功能函数。
3。导入CDockWinEx1(XT的Samples\DockingDemo)的头文件和cpp文件,在cpp文件里#include "CFormBar.h",修改
int CDockWinEx1::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 if (CXTDockWindow::OnCreate(lpCreateStruct) == -1)
  return -1;

 SetChild(CreateView(RUNTIME_CLASS(CFormBar), NULL, NULL));
 return 0;
}
5。MainFrm.h里#include "CDockWinEx1.h",声明public变量CDockWinEx1 m_wndDockBar。在OnCreate函数中,添加
if (!m_wndDockBar.Create(this, AFX_IDW_TOOLBAR+15, _T("参数面板"), CSize(220, 700), CBRS_RIGHT))
{
 TRACE0("Failed to create dock window\n");
 return -1;  // fail to create
}
m_wndDockBar.EnableDocking(CBRS_ALIGN_ANY);
---
BOOL CMyWorkView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)的参数zDelta代表滚轮滚动的距离。zDelta值为WHEEL_DELTA(120)意味着鼠标滚轮向前滚动了一个单位,如果值为-WHEEL_DELTA则意味着滚轮向后滚动了一个槽口。如果滚轮向前滚动了五个槽口,窗口将会收到五个WM_MOUSEWHEEL消息。

posted on 2006-05-24 11:37  [7]彩斑斓  阅读(1098)  评论(0编辑  收藏  举报