終于完成了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 閱讀(256)
評論(0) 編輯 收藏 引用 所屬分類:
Final work LOG