


下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、在J2ME/MIDP中實(shí)現(xiàn)圖像旋轉(zhuǎn) 摘 要 圖形圖像的旋轉(zhuǎn)在移動(dòng)應(yīng)用程序開(kāi)發(fā),特別是游戲開(kāi)發(fā)過(guò)程中有著現(xiàn)實(shí)的需求。但J2ME對(duì)此提供的支持卻十分有限,如MIDP2.0僅支持圖像成90度整數(shù)倍的旋轉(zhuǎn)。針對(duì)這種情況, 本文提出了一種實(shí)現(xiàn)圖像任意角度旋轉(zhuǎn)的方案并提供了算法實(shí)現(xiàn)。然后對(duì)算法的應(yīng)用問(wèn)題進(jìn)行了探討,分析了算法的局限性。最后介紹了在j2me中實(shí)現(xiàn)旋轉(zhuǎn)的另外兩種參考性方案。 關(guān)鍵詞 J2ME;CLDC;MIDP;Sprite;圖像旋轉(zhuǎn) 1 &
2、#160; J2ME概述 J2ME是標(biāo)準(zhǔn)版java(J2SE)面向手機(jī)、PDA等各類移動(dòng)和嵌入式設(shè)備的縮減版本,是一種獲得眾多廠商的支持和廣泛使用的移動(dòng)設(shè)備開(kāi)發(fā)平臺(tái)。圖一展示了J2ME技術(shù)的體系結(jié)構(gòu)。它分為三層:虛擬機(jī)層,配置層,和簡(jiǎn)表層。 配置層(Configuration)通過(guò)對(duì)功能的描述,把千差萬(wàn)別的嵌入式設(shè)備進(jìn)行了功能的說(shuō)明和分類。它把運(yùn)算功能有限、內(nèi)存較小、電力有限的設(shè)備,定義在CLDC(有限連接設(shè)備配置)規(guī)范中,這類設(shè)備有PDA 、手機(jī)
3、等;把運(yùn)算能力相對(duì)較佳、內(nèi)存相對(duì)較大、電力供應(yīng)比較充足的設(shè)備,定義在CDC(連接設(shè)備配置)規(guī)范之中,這類設(shè)備有電冰箱、機(jī)頂盒、車載計(jì)算設(shè)備等。 虛擬機(jī)層(Virtual Machine)基于宿主操作系統(tǒng),按照某一種配置,實(shí)現(xiàn)了Java虛擬機(jī)。CDC配置對(duì)應(yīng)的虛擬機(jī)叫CVM,CLDC對(duì)應(yīng)的虛擬機(jī)叫做KVM。 簡(jiǎn)表層(Profile)建立在配置層之上,提供了面向用戶的更高層次的功能,如用戶接口,網(wǎng)絡(luò),數(shù)據(jù)存儲(chǔ)等?;A(chǔ)規(guī)范(Foundation Profile)和個(gè)人規(guī)范(Personal Profile)是CDC之上的兩個(gè)重要的規(guī)范,移
4、動(dòng)信息設(shè)備規(guī)范(MIDP)和PDA規(guī)范(PDAP)是CLDC之上的兩個(gè)重要的規(guī)范。當(dāng)前,無(wú)線應(yīng)用程序的開(kāi)發(fā)主要是在MIDP之上進(jìn)行的。 配置層和簡(jiǎn)表層共同構(gòu)成了J2ME的運(yùn)行環(huán)境。如CLDC/MIDP架構(gòu)構(gòu)筑了手機(jī)應(yīng)用程序的開(kāi)發(fā)和運(yùn)行環(huán)境。本文所實(shí)現(xiàn)的圖像旋轉(zhuǎn)算法便是基于這種架構(gòu)的。 e 圖一 J2ME 體系結(jié)構(gòu) 需要注意的是,這些規(guī)范也是在不斷發(fā)展的。如早期很多的設(shè)備的計(jì)算能力非常有限,CLDC1.0就只支持整型數(shù)值。后來(lái)數(shù)隨著設(shè)備運(yùn)算能力的提高,CLDC1.0發(fā)展到CLD
5、C1.1,就加如了對(duì)浮點(diǎn)運(yùn)算的支持。對(duì)MIDP規(guī)范也一樣,從1.0發(fā)展到2.0,它通過(guò)擴(kuò)充類和接口的功能,加強(qiáng)了對(duì)游戲開(kāi)發(fā)的支持,增加了圖像處理功能(旋轉(zhuǎn)要用到),增強(qiáng)了對(duì)網(wǎng)絡(luò)功能的支持,如串口、套接字、https等。 2 2D旋轉(zhuǎn)的數(shù)據(jù)基礎(chǔ) 考慮笛卡兒直角坐標(biāo)系中單個(gè)點(diǎn)旋轉(zhuǎn)的情況。如圖二示,這里點(diǎn)P(x,y)到原點(diǎn)O繞O點(diǎn)逆時(shí)針旋轉(zhuǎn)角度后到點(diǎn)P(x,y)。由三角函數(shù)的幾何意義,有x = r*cos ,y = r*si n 和x = r*cos( +) , y = r*si
6、n( + ),推出: x = x * cos y * sin y = y * cos + x * sin 當(dāng)把旋轉(zhuǎn)點(diǎn)一般化為Q(x0,y0),得到: x = x0 + (x - x0) cos - (y - y0) sin y = y0 + (y - y0) cos + (x - x0) sin 在開(kāi)發(fā)時(shí),我們使用設(shè)備坐標(biāo)系,它以屏幕的左上角為坐標(biāo)原點(diǎn),y軸方向向下。此時(shí),我們不妨視為饒旋轉(zhuǎn)點(diǎn)順時(shí)針旋轉(zhuǎn)的角度,這樣,上面的公式依然成立。
7、 圖二 2D點(diǎn)的旋轉(zhuǎn) 3 一般圖像的旋轉(zhuǎn)算法 3.1 算法思想 為實(shí)現(xiàn)整個(gè)圖像的旋轉(zhuǎn),我們首先獲取源圖像每個(gè)點(diǎn)的像素值。然后根據(jù)旋轉(zhuǎn)點(diǎn)和角度的大小計(jì)算出新圖像的大小。再逐點(diǎn)計(jì)算源圖像中每個(gè)點(diǎn)經(jīng)旋轉(zhuǎn)后在新圖像中對(duì)應(yīng)點(diǎn)的坐標(biāo),并把相應(yīng)的像素值賦給它。 在圖三中,陰影部分為源圖像,O為旋轉(zhuǎn)點(diǎn),P、Q分別為旋轉(zhuǎn)前后圖像左上角的點(diǎn),cx,cy為O相對(duì)于源圖像左上角P點(diǎn)的坐標(biāo)值。
8、; 這里我們以O(shè)為圓心,以O(shè)距圖像4個(gè)頂點(diǎn)的距離的最大值作為半徑dr畫圓,這樣圖像無(wú)論以任何角度旋轉(zhuǎn)都不會(huì)超出這個(gè)圓的范圍。于是,我們就以該圓為畫布繪制旋轉(zhuǎn)所得新圖像。由于實(shí)際中圖像是用矩形表示的,于是我們生成和圓的外切正方形(圖中虛線部分)等大小的新圖像。 對(duì)源圖像中任一點(diǎn)(i,j),根據(jù)上面的公式,不難計(jì)算出旋轉(zhuǎn)度在新圖像中的位置,即相對(duì)于Q點(diǎn)的位置(destX , destY): destX = dr + (i - cx) *cos(radian) - (j - cy)*sin(radian); destY = d
9、r + (j - cy) *cos(radian) + (i - cx)*sin(radian); 計(jì)算出這個(gè)位置后,把該點(diǎn)的像素值賦值到這個(gè)位置,如此對(duì)每個(gè)點(diǎn)進(jìn)行這種變換,即可實(shí)現(xiàn)整個(gè)圖像的旋轉(zhuǎn)。 旋轉(zhuǎn)后的圖像較大,在實(shí)際繪制時(shí)需要做位置調(diào)整,不難看出,Q點(diǎn)相對(duì)于P點(diǎn)的偏移量為(cx-dr , cy-dr)。即假設(shè)源圖像的屏幕位置為(a , b),則旋轉(zhuǎn)后的圖像位置應(yīng)該為( (a + cx dr) , (b + cy dr) )。
10、0; 圖三 旋轉(zhuǎn)算法示意圖 3.2 在J2ME中的算法實(shí)現(xiàn) 我們將上面的思想具體化,得到算法的流程圖(見(jiàn)圖四示) 圖四 算法流程圖 在MIDP2.0中,Image類提供了兩個(gè)方法:getRGB()和createRGBImage(),分別完成獲取圖像象素信息和通過(guò)像素?cái)?shù)組創(chuàng)建圖像的功能。借助于這兩個(gè)方法,結(jié)合上面的流程圖,我們得到實(shí)現(xiàn)圖像旋轉(zhuǎn)算法的代碼,如下面所示。 /*
11、 *param imgSource 源圖像 *param cx 旋轉(zhuǎn)點(diǎn)相對(duì)于源圖像坐上角橫坐標(biāo) *param cy 旋轉(zhuǎn)點(diǎn)相對(duì)于源圖像坐上角縱坐標(biāo) *param theta 圖像逆時(shí)針旋轉(zhuǎn)的角度 *param dd 含2個(gè)元素的整形數(shù)組,存放新圖像相對(duì)源圖像沿x軸和y軸的位置偏移量 *return 旋轉(zhuǎn)后的圖像 */ public Image rotate(Image imgSource, int cx, int cy, double theta, int dd)
12、; if (Math.abs(theta % 360) < 0.1) return imgSource; /角度很小時(shí)直接返回 int w1 = imgSource.getWidth(); /原始圖像的高度和寬度 int h1 = imgSource.getHeight(); int srcMap = new intw1 * h1;
13、 imgSource.getRGB(srcMap, 0, w1, 0, 0, w1, h1); /獲取原始圖像的像素信息 int dx = cx > w1 / 2 ? cx : w1 - cx; /計(jì)算旋轉(zhuǎn)半徑 int dy = cy > h1 / 2 ? cy : h1 - cy;
14、60; double dr = Math.sqrt(dx * dx + dy * dy); int wh2 = (int) (2 * dr + 1); /旋轉(zhuǎn)后新圖像為正方形,其邊長(zhǎng)+1是為了防止數(shù)組越界 int destMap = new intwh2 * wh2; /存放新圖像象素的數(shù)組 &
15、#160; double destX, destY; double radian = theta * Math.PI / 180; /計(jì)算角度計(jì)算對(duì)應(yīng)的弧度值 for (int i = 0; i < w1; i+) for (int j = 0; j < h1; j+)
16、 if (srcMapj * w1 + i >> 24 != 0) /對(duì)非透明點(diǎn)才進(jìn)行處理 / 得到當(dāng)前點(diǎn)經(jīng)旋轉(zhuǎn)后相對(duì)于新圖像左上角的坐標(biāo)
17、 destX = dr + (i - cx) * Math.cos(radian) + (j - cy)* Math.sin(radian); destY = dr + (j - cy) * Math.cos(radian) - (i -
18、 cx)* Math.sin(radian); /從源圖像中往新圖像中填充像素 &
19、#160; destMap(int) destY * wh2 + (int) destX = srcMapj * w1 + i;
20、; dd0 = cx-dr; /返回位置偏移分量 3解決問(wèn)題的幾點(diǎn)建議 3.1會(huì)計(jì)法規(guī)制定的原則應(yīng)體現(xiàn)中國(guó)特色并與國(guó)際慣例接軌 我國(guó)在制定會(huì)計(jì)準(zhǔn)則的過(guò)程中,一方面應(yīng)充分考慮國(guó)情,使會(huì)計(jì)準(zhǔn)則盡量能為我國(guó)企業(yè)的良性發(fā)展服務(wù),并要加快無(wú)形資產(chǎn)、人力資源、國(guó)際業(yè)務(wù)等方面的具體會(huì)計(jì)準(zhǔn)則的研究步伐。另一方面,我國(guó)已經(jīng)加入WTO,WTO要求各個(gè)成員的國(guó)內(nèi)立法要與相關(guān)規(guī)則和成員國(guó)自己的承諾相一致,當(dāng)前幾乎所有的國(guó)家都將WTO規(guī)則轉(zhuǎn)換為國(guó)內(nèi)法律。因此,這就要求我們對(duì)原有的會(huì)計(jì)法規(guī)進(jìn)行調(diào)整,予以完善。并且要在體現(xiàn)我國(guó)特色的基礎(chǔ)上,借鑒和吸收國(guó)際會(huì)計(jì)準(zhǔn)則中的有用成分,使我國(guó)會(huì)計(jì)準(zhǔn)則與國(guó)際會(huì)計(jì)準(zhǔn)則協(xié)調(diào)起來(lái),具體來(lái)講
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 圖書館管理計(jì)劃
- 胸痹針灸治療
- 看的技巧之預(yù)測(cè)顧客的需求
- 統(tǒng)編版小學(xué)語(yǔ)文二年級(jí)下冊(cè)第24課《當(dāng)世界年紀(jì)還小的時(shí)候》精美課件
- 第14課 海峽兩岸的交往 教學(xué)設(shè)計(jì)-2023-2024學(xué)年浙江省部編版歷史與社會(huì)八年級(jí)下冊(cè)
- 財(cái)務(wù)報(bào)表知識(shí)培訓(xùn)課件
- 第六單元 中華民族的抗日戰(zhàn)爭(zhēng) 大單元教學(xué)設(shè)計(jì) 2023-2024學(xué)年部編版八年級(jí)歷史上學(xué)期
- 第四單元小數(shù)的意義和性質(zhì)(教學(xué)設(shè)計(jì))-2023-2024學(xué)年四年級(jí)下冊(cè)數(shù)學(xué)人教版
- 2025年迪慶道路運(yùn)輸從業(yè)資格考試系統(tǒng)
- 2025年周口貨運(yùn)從業(yè)資格證考試題及答案
- 主要河流南、北方河流的不同特征主要湖泊
- 行進(jìn)間接單手低手投籃說(shuō)課稿
- 寺院管理框架結(jié)構(gòu)圖PPT課件
- 單考單招數(shù)學(xué)公式總結(jié)
- 三打白骨精英文話劇劇本(原創(chuàng))
- 2019第五版新版PFMEA 注塑實(shí)例
- 李雁鳴循環(huán)理論
- 釩電池項(xiàng)目財(cái)務(wù)數(shù)據(jù)分析(范文模板)
- 電暈水測(cè)試液配方
- 日處理300t鮮奶的脫脂奶粉生產(chǎn)車間
- 工業(yè)鍋爐水處理系統(tǒng)調(diào)試報(bào)告
評(píng)論
0/150
提交評(píng)論