终于完成了A阶段,下面可以进入B阶段了,主要集中在程序的UI上,另外考虑如何提升速度。
我的临时文档,看起来好乱,程序里的标识符也没完全按文档里的来,真是乱套了,明天好好修改修改。
放入MyDefine.h,MyDefine.cpp文件
1. 河的边线
Doc里放入:
//num of ctrl pnt,nodal pnt,display style,
//wave speed wave distance and wave num
int ctrlNum,ndlNum,style,wSpeed,wDistance,wNum;
//the pnt array represent ctrl pnts and nodal pnts.
CArray <CPoint,CPoint&> c_PntsL,c_PntR,n_PntsL,n_PntsR;
视图类和文档类都要引用MyDefine.h,用#ifndef吧
以下内容放在视图类里的OnCreate函数中,先为CView的派生类声明一个图元文件的数据成员HMETAFILE m_hMetaFile;
CArray <CPoint,CPoint&> initL,initR;
//预先输入的控制点,自定义
Int const Max=60;
//CArray <CPointPartner,CPointPartner&> init_CPntPtr,final_CPntPtr;
//CPointPartner作为TYPE有问题,还是用数组
//改为:
CPointPartner init_CPntPtr[Max],final_CPntPtr[Max];
//最后的点对数组final_CPntPtr给CCurve类用
While(i<Num)
{
CPointPartner temp_CPntPtr (initL[i],initR[i]);
init_CPntPtr.Add(temp_CPntPtr);
i++;
}
//鼠标点击或预先指定控制点,即一些点对
//以及处理后得到的点对
CSpline spL (initL);
CSpline spR (initR);
//两边的样条曲线
CArray<CPoint,CPoint&> finalL,finalR;
//处理后得到的样条曲线上的点
spL.GetPoints(finalL);
spR.GetPoints(finalR);
Count=finalL.GetSize();
For(int i=0;i<count;i++)
{
CPointPartner Temp_finalP (finalL[i],finalR[i])
Final_CPntPtr[i]=temp_finalP;//重载=运算符
}
//将样条对象spL,spR里的点放入finalL和finalR,之后又放入点对数组final_CPntPtr;
//共count个点对
CMetaFileDC metaFileDC;
metaFileDC.Create();
这里画出边线(通过finalL和finalR)
m_hMetaFile=metaFileDC.Close();
5.23晚19:30以上程序的调试已完成(未加鼠标控制)
2. 一道道波纹(CCurve类)
在视图类中声明数据:CArray<Points,Points&> mPntsCurve;
在OnDraw里
先确定水波位置:
WavePL[i]和WavePR[i]
For(int i=0,i<WaveN;i++)
{
CCurve tempCurve (final_CPntPtr[i]);
tempCurve.ComputePnts(mPntsCurve);
连这些点成线
}
详细设计:
Doc里定义两个点,
View里定义一个函数BOOL ComputePnts(CArray<CPoint,CPoint&>& m_Pnts,CPoint m_LPnt,CPoint m_RPnt)
OnDraw里给两个点赋值,调用ComputePnts,再绘图
与MFC的联系
//用图元文件保存边线,中间的curve即时画出来
//要描绘的点,每两点画条线连接LineTO
或者将点集的计算都放在文档类中,给文档类新建两个函数
数据的放置位置还得琢磨琢磨
5.21 晚12:00此文档完成
Spline的计算在CDoc里,Curve的计算在CView里
5. 29 晚1:47 添加(明天再修改)
5.30
Q: Spline里的temp值使得数组越界问题
A: 精度造成的,两个float型变量t和T1[j1+1]都为0.90000,但t>T1[j1+1]为true,
Tips:
1. 查找类型强制转换以及精度丢失的知识
2. 看林锐的《高质量C++编程》,注意这些细节。
5.31
已完成:位图作为背景。
Q:鼠标控制的问题
posted on 2007-05-30 02:01
rebol 阅读(250)
评论(0) 编辑 收藏 引用 所属分类:
Final work LOG