全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2190
推到 Plurk!
推到 Facebook!

正方體的旋轉---繼上次分享 [3D圓的旋轉]來個比較容易的

 
daniel__lee
高階會員


發表:18
回覆:124
積分:113
註冊:2002-11-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-11 16:53:39 IP:61.218.xxx.xxx 未訂閱
//--------------------------------------------------------------------------- #include  #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" //--------------------------------------------------------------------------- #include <math.h> #define PI 3.141693 #define NS 6 #define D 5 #define VD 500 float Theta=0, Phi = 0, SN1,SN2,CN1,CN2,NV=8,K1=10,K2=15,W,phi,theta, V[8][3]={1,1,-1, 1,1,1, 1,-1,1, 1,-1,-1, -1,1,-1, -1,-1,-1, -1,-1,1, -1,1,1}, VC[8][3], SC[8][3], N[6][3], U[3], P[3], VSF[6], SF[6][5]={0,1,2,3,0, 0,4,7,1,0, 4,5,6,7,4, 3,2,6,5,3, 1,7,6,2,1, 0,3,5,4,0}; int mouse_x,mouse_y; void DefineViewingParameters(); void VerticeArray(); void ViewingCoordinates(int); void ScreenCoordinates(int); void NormalArray(); void VisibilityTest(); void Plot(); TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::FormActivate(TObject *Sender) { Timer1->Enabled=false; Timer1->Interval=200; Form1->Caption="正方體的旋轉"; Form1->Canvas->FillRect(Rect(0,0,ClientWidth,ClientHeight)); Form1->Canvas->TextOutA(5,5,"用滑鼠選擇繪圖位置"); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { Form1->Canvas->TextOutA(5,5,"用滑鼠選擇繪圖位置 X=" IntToStr(X) " Y=" IntToStr(Y)); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { AnsiString InputString; mouse_x=X; mouse_y=Y; Form1->Canvas->FillRect(Rect(0,0,ClientWidth,ClientHeight)); Form1->Canvas->TextOutA(5,5,"用滑鼠選擇繪圖位置 X=" IntToStr(X) " Y=" IntToStr(Y)); if(Timer1->Enabled==false) { InputString = InputBox("Input Box", "請輸入Phi角", "45"); phi=StrToInt(InputString); } Timer1->Enabled^=1; } //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { if(theta>180) { theta=0; phi =5; if(phi>180)phi=0; } Theta=theta; Phi=phi; DefineViewingParameters(); VerticeArray(); NormalArray(); VisibilityTest(); Plot(); theta =1; } //--------------------------------------------------------------------------- void DefineViewingParameters() { Theta=Theta*PI/180; Phi=Phi*PI/180; SN1=sin(Theta); SN2=sin(Phi); CN1=cos(Theta); CN2=cos(Phi); } //--------------------------------------------------------------------------- void VerticeArray() { int j; for(j=0;jCanvas->FillRect(Rect(0,0,Form1->ClientWidth,Form1->ClientHeight)); Form1->Canvas->TextOutA(5,5,"用滑鼠選擇繪圖位置 X=" IntToStr(mouse_x) " Y=" IntToStr(mouse_y)); for(j=0; jCanvas->MoveTo(a mouse_x,b mouse_y); Form1->Canvas->Pixels[a mouse_x][b mouse_y]=clRed; } else Form1->Canvas->LineTo(a mouse_x,b mouse_y); } } } //--------------------------------------------------------------------------- ~ 勿在浮沙上面築高塔 ~
------
~ 勿在浮沙上面築高塔 ~
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-11 18:26:12 IP:211.76.xxx.xxx 未訂閱
daniel__lee 您好:    感寫您分享的程式。< > 在此有個建議供您參考: 您可以將程式內容壓縮後上傳,供會員下載。 雖然直接放在網上也行,不過某些指令似乎又跟站上顯示的控制碼衝到,導致掉了不少東西,影響程式的閱讀。 關於這一點不知道站上哪位大大可為我們解說一下,如何避免程式碼在顯示時,會無端消失的現象。< > RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
daniel__lee
高階會員


發表:18
回覆:124
積分:113
註冊:2002-11-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-12 08:40:21 IP:61.218.xxx.xxx 未訂閱
不知道怎麼上傳耶 ~ 勿在浮沙上面築高塔 ~
------
~ 勿在浮沙上面築高塔 ~
daniel__lee
高階會員


發表:18
回覆:124
積分:113
註冊:2002-11-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-12 08:59:55 IP:61.218.xxx.xxx 未訂閱
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=57565 這樣應該可以了 ~ 勿在浮沙上面築高塔 ~
------
~ 勿在浮沙上面築高塔 ~
sung671
一般會員


發表:0
回覆:1
積分:0
註冊:2004-10-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-19 08:49:11 IP:211.76.xxx.xxx 未訂閱
請問大大您,可否提供在2維平面上,用點畫出的圖形做360度的旋轉呢~ 因bcb我大部份看到的皆是直接把image做旋轉,得到旋轉的效果~ 如果可以的話可否提供相關的演算法做參考呢~謝謝
daniel__lee
高階會員


發表:18
回覆:124
積分:113
註冊:2002-11-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-19 08:57:03 IP:61.218.xxx.xxx 未訂閱
to:sung671 http://delphi.ktop.com.tw/topic.php?topic_id=57786 ~ 勿在浮沙上面築高塔 ~
------
~ 勿在浮沙上面築高塔 ~
系統時間:2024-04-19 12:54:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!