c语言dda算法完整实现,计算机图形学DDA算法.doc
計(jì)算機(jī)圖形學(xué)DDA算法
DDA算法
DDA算法(Digital Differential Analyzer),又稱數(shù)值微分法,是HYPERLINK "/view/13769.htm"計(jì)算機(jī)圖形學(xué)中一種基于直線的微分方程來生成直線的方法。
目錄
1HYPERLINK "/viewhtm#1"算法思想
2HYPERLINK "/viewhtm#2"算法描述
3HYPERLINK "/viewhtm#3"代碼實(shí)例
算法思想
直線的基本微分方程為:設(shè)直線通過點(diǎn)
和,則直線方程可表示為:
如果已知第點(diǎn)的坐標(biāo),可用步長
和得到第點(diǎn)的坐標(biāo)為:
或
如下圖:
將算得的直線上每個(gè)點(diǎn)的當(dāng)前坐標(biāo),按四舍五入得到光柵點(diǎn)的位置。
算法描述
DDA算法的C語言描述如下。
當(dāng)
時(shí),實(shí)現(xiàn)代碼:
voidDDALine(intx0,inty0,intx1,inty1,intcolor)
{
intx;floatdx,dy,y,k;
dx=x1-x0,dy=y1-y0;
k=dy/dx,y=y0;
for(x=x0;x<=x1;x++)
{
Drawpixel(x,int(y+0.5),color);
y=y+k;
}
}
當(dāng)時(shí),實(shí)現(xiàn)代碼:
voidDDALine(intx0,inty0,intx1,inty1,intcolor)
{
inty;floatdx,dy,x,k;
dx=x1-x0,dy=y1-y0;
k=dx/dy,x=x0;
for(y=y0;y<=y1;y++)
{
Drawpixel(int(x+0.5),y,color);
x=x+k;
}
}
任意斜率代碼實(shí)現(xiàn)如下:
HYPERLINK "/viewhtm#"?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
voidDDALine(intx0,inty0,intx1,inty1,intcolor)
{
intdx,dy,n,k;floatxinc,yinc,x,y;
dx=x1-x0;dy=y1-y0;
if(abs(dx)>abs(dy))
n=abs(dx);
else
n=abs(dy);
xinc=(float)dx/n;
yinc=(float)dy/n;
x=(float)x0;y=(float)y0;
for(k=1;k<=n;k++)
{
Drawpixel(int(x+0.5),int(y+0.5),color);
x+=xinc;
y+=yinc;
}
}
3、代碼實(shí)例HYPERLINK "/viewhtm#"編輯
Java代碼
HYPERLINK "/viewhtm#"?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//代碼
KeyGenerator kg = KeyGenerator.getInstance("AES"); //獲取密匙生成器
kg.init(256); //初始化
//DES算法必須是56位
//DESede算法可以是112位或168位
//AES算法可以是128、192、256位
SecretKey key = kg.generateKey(); //生成密匙,可用多種方法來保存密匙
//加密
Cipher cp = Cipher.getInstance("AES"); //創(chuàng)建密碼器
cp.init(Cipher.ENCRYPT_MODE, key); //初始化
String str = "我是需要被加密的明文";
byte [] ptext = str.getBytes("UTF8");
byte [] ctext = cp.doFinal(ptext); //加密
//解密
Cipher cp = Cipher.getInstance("AES"); //創(chuàng)建密碼器
cp.init(Cipher.DECRYPT_MODE, key); //初始化
byte [] ptext = cp.doFinal(ctext); //解密
String str = new String(ptext, "UTF8"); //重新顯示明文
參考資料
1.HYPERLINK "javascript:void(0)" HYPERLINK "/redirect/4e5fTS/I6q9DqKjKRLK5yauPAR/Sd7gyMcE1M
總結(jié)
以上是生活随笔為你收集整理的c语言dda算法完整实现,计算机图形学DDA算法.doc的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Flask Web表单
- 下一篇: 30342程序格式