當前位置:首頁 » 操作系統 » 多邊形掃描線演算法

多邊形掃描線演算法

發布時間: 2022-04-28 09:25:32

Ⅰ 怎麼用opengl掃描線演算法填充多邊形

掃描線演算法是光柵圖形學的內容,底層硬體實現。opengl是不會關注這種細節的。你寫這樣的代碼
glBegin(GL_POLYGON);
glVertex3f(...);
...
glVertex3f(...);
glEnd();
畫一個多邊形,但底層的光柵化到底是怎麼實現的,是否使用掃描線演算法,你是不可以控制的。

c語言實現多邊形填充

/*直角三角形,輸入行數,輸出*/
#include <stdio.h>
void main()/*如果TC編譯不通過,則去掉void*/
{
int n;
scanf("%d",&n);
for (int i = 1;i <= n;i++)
{
for (int j = 0;j < i;j++)
printf("*");
printf("\n");
}
}
/*等腰三角形,輸入行數,輸出*/
#include <stdio.h>
void main()/*如果TC編譯不通過,則去掉void*/
{
int n;
scanf("%d",&n);
for (int i = 1;i <= n;i++)
{
for (int k = 1;k <= n-i;k++)
printf(" ");
for (int j = 0;j < 2*i-1;j++)
printf("*");
printf("\n");
}
}
以上在VS2005上編譯通過

Ⅲ 急求用C語言編寫的掃描線填充多邊形的演算法

可惜,分少了。
去投票或回答問題弄50+分,問題加到50分+就可以辦了。能給我投幾票就更好了。( ⊙ o ⊙ )

Ⅳ 求c語言掃描線填充演算法代碼 事成再加100分

早講啊,刪了:(

這有個,一般能擺到的我都不求人
http://tieba..com/f?kz=194814414

pudn上搜唄,多的一塌糊塗

Ⅳ 多邊形掃描轉換中,活性邊表的數據結構有哪幾項

該演算法用到的數據結構有:

typedef struct nodeEdge
{
int ymax; //邊的上端點的y坐標
float x; //在AEL中表示當前掃描線與邊的交點的x坐標,
//初值(即在ET中的值)為邊的下端點x的坐標
float deltax; //邊的斜率的倒數
nodeEdge *nextEdge; //指向下一條邊的指針
}Edge; //邊的分類表和活化邊表的數據結構(掃描轉換多邊形的掃描線演算法)

void CGraphicsView::SCanPolygon(int color,CDC*pDC)
{
//掃描轉換多邊形—掃描線演算法
Edge *et[ARRLENGTH];
Edge e[90];
Edge* ael;
Edge test;
Edge *left,*right; //left和right做配對用
int i;

for(i=0;i<ARRLENGTH;i++)
{
et[i]=NULL;
}

//手動生成et表
e[0].ymax=40; e[0].x=50; e[0].deltax=-1; e[0].nextEdge=&e[20];
e[20].ymax=50; e[20].x=70; e[20].deltax=5.0/4; e[20].nextEdge=NULL;
e[60].ymax=80; e[60].x=20; e[60].deltax=0; e[60].nextEdge=NULL;
e[30].ymax=110; e[30].x=120; e[30].deltax=0; e[30].nextEdge=NULL;
e[50].ymax=80; e[50].x=70; e[50].deltax=-5; e[50].nextEdge=&e[40];
e[40].ymax=110; e[40].x=70; e[40].deltax=5.0/4; e[40].nextEdge=NULL;
et[0]=NULL; et[10]=&e[0]; et[20]=NULL; et[30]=NULL;
et[40]=&e[60]; et[50]=&e[30]; et[60]=NULL; et[70]=&e[50]; et[80]=NULL;

Ⅵ 求計算機圖形學的習題

一、單項選擇題(本大題共10小題,每小題3分,共30分)提示:在每小題列出的四個備選項中只有一個是符合題目要求的,請將其代碼填寫在題後的括弧內。錯選、多選或未選均無分
1)灰度等級為256級,解析度為1024*1024的顯示模式,至少需要的幀緩存容量為___bit。
A、7M B、8M
C、10M D、16M

2) __是在高於顯示解析度的較高解析度下用點取樣方法計算,然後對幾個像素的屬性進行平均得到較低解析度下的像素屬性。實際上是把顯示器看成是比實際更細的網格來增加取樣率。
A、提高顯示解析度
B、圖像分割
C、過取樣(supersampling)
D、區域取樣(areasampling)

3)用一個n位的整數表示一個位串,用它控制線型時,可以n個像素為周期進行重復顯示。若Patten=11100101,
而i表示畫線程序中的第i個像素,則畫線程序中的SETPIXEL(X,Y,COLOR)可改寫為__
A、if(pattern[i%4])setixel(x,y,color);
B、if(pattern[i%6])setixel(x,y,color);
C、if(pattern[i%8])setixel(x,y,color);
D、if(pattern[i%12])setixel(x,y,color);

4、點P的齊次坐標為(8,6,2),其對應的空間坐標為__ __。
A、(8,6,2) B、(8,6)
C、(4,3,1) D、(4,3)

5)在多邊形的逐邊裁剪法中,對於某條多邊形的邊(方向為從端點S到端點P)與某條裁剪線(窗口的某一邊)的比較結果共有以下四種情況,分別需輸出一些頂點.請問哪種情況下輸出的頂點是錯誤的_____。
A:S和P均在可見的一側,則輸出S和P.
B:S和P均在不可見的一側,則不輸出頂點.
C:S在可見一側,P在不可見一側,則輸出線段SP與裁剪線的交點.
D:S在不可見的一側,P在可見的一側,則輸出線段SP與裁剪線的交點和P.

6)掃描線多邊形填充演算法中,對於掃描線同各邊的交點的處理具有特殊性。穿過某兩條邊的共享頂點的掃描線與這兩條邊的交點數只能計為___交點:
A、0 個 B、1個
C、2個 D、3個

7、如果觀察方向(視線方向)為Z軸負向,觀察向量可設為V=(0,0,-1),則對場景中的圖形表平面可判定其可見性。令某平面的法向量為N=(A,B,C)。當___時,該平面可判定為後向面(Back-Face)即是觀察時不可見的面。
A、C<=0 B、C>=0
C、A>=0 D、B<=0

8、多邊形面的平面方程為:Ax+By+Cz+D=0。投影後,若掃描線上起始點的深度值為,
則該面的掃描線上所有後繼點的深度值計算公式為__ _
A)z(x+1,y)=z(x,y)+A/C
B)z(x+1,y)=z(x,y)-A/C
C)z(x+1,y)=z(x,y)+C/A
D)z(x+1,y)=z(x,y)-C/A

9)當觀察光照下的光滑物體表面時,在某個方向上看到高光或強光,這個現象稱為__ _
A、漫反射 B、鏡面反射 C、環境光 D、折射

10)、繪制樣條曲線時,如果控制點中的任一個發生了變動,則整條曲線都將受到影響的是_ __曲線:
A、自然三次樣條
B、Hermite插值樣條
C、Cardinal樣條
D、Korchanek-Bartels樣條
二、判斷題(本大題共5小題,每小題2分,共10分)提示:正確打,錯誤打,並分別簡述理由。
1、 處理器的主要任務是將應用程序給出的圖形定義數字化為一組像素強度值,並存放在幀緩存中,這個數字化過程稱為掃描轉換。
2、繞多邊形的邊界,計算相鄰邊界向量的叉乘可識別出該多邊形是凸還是凹多邊形。如果叉乘結果全部為正則為凹多邊形;若有正有負,則為凸多邊形。
3、使用查色表可以提供合理的能夠同時顯示的顏色數,而無須大容量的幀緩沖器。這時,幀緩沖器中存放的是真正的顏色編碼。
4、某種顏色,在GRB顏色模型下坐標值(1,0.7,0.8),在CMY顏色模型下也是(1,0.7,0.8)
5、透視投影變換後,圖形中的不平行於觀察平面的各組平行線的延長線,能夠匯聚成最多3個滅點。
三.計算推導題目(本大題共2小題,每小題10分,共20分)。
1.給定四點P1(0,0,0),P2(1,1,1),P3(2,-1,-1),P4(3,0,0)。用其作為特徵多邊形來構造一條三次貝塞爾曲線段,請寫出該曲線的參數化表達式,並計算參數為1、2/3時曲線上點的值。
2.用Liang-Barsky線段裁剪方法,使用窗口(0,0)(2,2)裁剪以下線段,要求寫出計算步驟和裁剪結果。
a)線段A(1,-2)B(1,2)

四.變換題(本大題共3小題,每小題10分,共30分)。提示:用列向量表示,注意矩陣乘的順序。用齊次坐標表示變換矩陣。不要求計算出最後結果,但是每個矩陣要表示出來。
1.二維空間中,圖形繞點(-1,-2),順時針旋轉50度的變換矩陣。
2.在XOY二維平面坐標系中有點P(4,1)和點O』(3,4)。現以O』P作為Y』軸正向建立新坐標系X』O』Y』(都是右手坐標系),請寫出圖形由XOY到X』O』Y』的坐標變換矩陣。
3.設投影參考點為(0,0,d),投影面為xoy平面,請推導投影變換矩陣。
五、編程及分析題(本大題共1小題,每題10分,共10分),
1. 請根據中點圓生成演算法思想,對圓x2+y2=R2,推出第一象限中從y=0到y=x這段弧的生成演算法。要求推導出主要的計算公式,並寫出演算法(描述性演算法)。提示這一段上,y的變換率比x大。
這個行不,要答案找我

Ⅶ 計算機圖形學演算法演示系統的設計的專業實習報告 要求用C++誰能給個成型的 急啊!!!

這個你找一下源碼下載的網站,裡面好像有

Ⅷ 填充演算法的種子填充演算法

種子填充演算法又稱為邊界填充演算法。其基本思想是:從多邊形區域的一個內點開始,由內向外用給定的顏色畫點直到邊界為止。如果邊界是以一種顏色指定的,則種子填充演算法可逐個像素地處理直到遇到邊界顏色為止。
種子填充演算法常用四連通域和八連通域技術進行填充操作。
從區域內任意一點出發,通過上、下、左、右四個方向到達區域內的任意像素。用這種方法填充的區域就稱為四連通域;這種填充方法稱為四向連通演算法。
從區域內任意一點出發,通過上、下、左、右、左上、左下、右上和右下八個方向到達區域內的任意像素。用這種方法填充的區域就稱為八連通域;這種填充方法稱為八向連通演算法。
一般來說,八向連通演算法可以填充四向連通區域,而四向連通演算法有時不能填充八向連通區域。例如,八向連通填充演算法能夠正確填充如圖2.4a所示的區域的內部,而四向連通填充演算法只能完成如圖2.4b的部分填充。
圖2.4 四向連通填充演算法
a) 連通域及其內點 b) 填充四連通域
四向連通填充演算法:
a) 種子像素壓入棧中;
b) 如果棧為空,則轉e);否則轉c);
c) 彈出一個像素,並將該像素置成填充色;並判斷該像素相鄰的四連通像素是否為邊界色或已經置成多邊形的填充色,若不是,則將該像素壓入棧;
d) 轉b);
e) 結束。
四向連通填充方法可以用遞歸函數實現如下:
演算法2.3 四向連通遞歸填充演算法:
void BoundaryFill4(int x, int y, long FilledColor, long BoundaryColor)
{
long CurrentColor;
CurrentColor = GetPixelColor(x,y);
if (CurrentColor != BoundaryColor && CurrentColor != FilledColor)
{
SetColor(FilledColor);
SetPixel (x,y);
BoundaryFill4(x+1, y, FilledColor, BoundaryColor);
BoundaryFill4(x-1, y, FilledColor, BoundaryColor);
BoundaryFill4(x, y+1, FilledColor, BoundaryColor);
BoundaryFill4(x, y-1, FilledColor, BoundaryColor);
}
}
上述演算法的優點是非常簡單,缺點是需要大量棧空間來存儲相鄰的點。一個改進的方法就是:通過沿掃描線填充水平像素段,來處理四連通或八連通相鄰點,這樣就僅僅只需要將每個水平像素段的起始位置壓入棧,而不需要將當前位置周圍尚未處理的相鄰像素都壓入棧,從而可以節省大量的棧空間。

Ⅸ 計算機圖形學 問題 中點圓演算法和掃描線演算法

寫個文檔解釋一下。

熱點內容
360app加密 發布:2024-10-04 15:21:23 瀏覽:981
佛山埃安s哪個配置好 發布:2024-10-04 15:21:23 瀏覽:510
mysql主伺服器ip 發布:2024-10-04 15:19:28 瀏覽:13
linux刪除mysql用戶 發布:2024-10-04 15:16:54 瀏覽:481
vivo存儲招標 發布:2024-10-04 14:40:16 瀏覽:315
腳本櫻井光 發布:2024-10-04 14:40:03 瀏覽:911
易語言給程序加密 發布:2024-10-04 14:32:49 瀏覽:444
交電費的密碼是多少 發布:2024-10-04 14:31:59 瀏覽:482
月薪正演算法 發布:2024-10-04 14:30:44 瀏覽:139
linux命令行輸入 發布:2024-10-04 14:13:19 瀏覽:734