计算机模拟数学实验动画,计算机图形学实验-简单动画的实现、三维图形变换.docx...
安徽大學計算機實驗教學中心PAGE
安徽大學計算機實驗教學中心
PAGE 1
學號 專業 姓名
實驗日期2018.12.11 教師簽字 成績
實驗報告
【實驗名稱】簡單動畫的實現、三維圖形變換
【實驗目的】
指定圖形運動軌跡,實現物體的移動過程和移動速度控制;
(2) 理解并掌握形體的投影變換的原理;
【實驗原理】
1)簡單動畫的原理:顯示一個對象,然后把它抹去,把這個圖形進行變換后,再在新位置予以顯示.當上述過程重復執行時,在視覺上便產生了運動;了解 getimage函數和 putimage函數、imagesize函數、malloc 函數、 cleardevice函數的使用。
2)繪制一點透視圖的變換矩陣:
1 0 0 0
T= 0 1 0 0
0 0 0 1/d
L m n 1+n/d
得變換后的點坐標為:
x’=(x+l)/(d+(n+z)*d)
y’=(y+m)/(d+(n+z)*d)
z’=0
設計思想
圖形的移動
分別畫出一個六邊形和一個三角形,用兩個一維數組p和A來存放其各點坐標;運用putimage(x,y,p,op)函數將六邊形不斷地向三角形平移,直到到達三角形的邊界位置為止。
用到的函數如下:
getimage(x1,y1,x2,y2,p);將屏幕左上角(x1,y1),右下角(x2,y2)的矩形區域內的圖象存到指針P所指向的內存區域中。putimage(x,y,p,op);將p所指向的內存區域的內容在屏幕上顯示,左上角坐標(x,y)。
一點透視
基本步驟如下:
將三維物體平移到適當位置(l,m,n);
令視點在z軸,進行透視變換,變換矩陣如下:
最后,向xOy面作正投影變換,將結果變換到xOy面上。如此構造的一點透視變換矩陣為:
則三維形體中任意一點(x,y,z)的一點透視變換的齊次坐標計算形式為:
[x’,y’,z’,1]=;
【實驗內容】
1.圖形的移動顯示兩個圖形,然后移動其中一個圖形.當被移動的圖形超出屏幕范圍時,輸
出錯誤信息“Coordinate out of range”并結束。
#define SHOW_CONSOLE
#include
#include
#include
const int size_x=640,size_y=480;
int main()
{
PIMAGE w;
initgraph(size_x, size_y);//打開一個長640像素,寬480像素的窗口
w = newimage();
circle(100,100,50);
getimage(w,50,50,150,150);
for(int i=0;i<=1000;delay_fps(60),i += 1){
if(i > size_x){
outtextxy(210, 210, "Coordinate out of range");
break;
}
cleardevice();
putimage(i,200,w);
circle(100,100,50);
}
getch();//讓屏幕暫停一下
closegraph();//關閉繪圖窗口
return 0;
}
2.顯示一個立方體的一點透視投影圖;(用數組存放正方體的各頂點坐標)。
(選)顯示一個立方體的兩點透視投影圖、斜二測圖;(用數組存放正方體的各頂點坐標)。
#define SHOW_CONSOLE
#include "graphics.h" // 引用ege圖形庫
#include
#include
#include
#include
#include
const int size_x=640,size_y=480;
const double eps = 1e-6;
struct Node{
int x,y,z;
//Node(int a,int b,int c){x=a,b=y,c=z;}
};
std::vector co;
void input()
{
int n,x,y,z;
總結
以上是生活随笔為你收集整理的计算机模拟数学实验动画,计算机图形学实验-简单动画的实现、三维图形变换.docx...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何种西西果?
- 下一篇: 组装台式电脑配置清单_攒机必备!各种价位