版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
平面四參數(shù)轉換引言:我們求出四參數(shù)到底有什么意義呢?假如我們用C#寫一個畫圖的程序,比如在picturebox中畫一個某一邊是尖頭的矩形。我們知道,picturebox的坐標系的原點在它的左上角,X軸是向指向右邊的,Y軸是指向下邊的。而測量坐標系中,X是指向上邊的(北),Y是指向右邊的(東),原點在左下角,為了方便用戶設計圖形,我們就用測量的坐標系來設計。在船體坐標系中,如下圖3(新坐標系,用戶定義的坐標系):用戶定義的船體坐標系我們知道四參數(shù)后,就可以把測量坐標系的幾個點轉換成picturebox坐標,然后畫出來。當然也可以改變picturebox控件的坐標,但是這樣效率很低,也不容易理解,特別是圖形旋轉的話也很難弄。原始坐標系是:Xo-Yo 經(jīng)過尺度縮放,坐標系旋轉,然后再平移,變成了Xt-Yt坐標系。如《控制測量》上的圖1:
圖1中,我們要注意的是:X的方向是向右的,Y是向上的。旋轉角是以順時針方向為正的這兩點非常重要。如果X是向上的,那么四參數(shù)將會不一樣;而如果旋轉角是逆時針方向為正的,四參數(shù)也不一樣。X有可能是向左或者向下的甚至是向任意方向的,所以關鍵是我們一定要能畫出圖形,并且推導出公式。如《控制測量》書上的推導圖就很典型可以做為參考,如圖2:
這個圖的優(yōu)點就在于,它的源坐標系旋轉后就成為水平和垂直的軸線,非常便于平移理解。需要注意的是,圖2中,源坐標系X向任意方向,Y軸的正方向和X軸的正方向逆時針旋轉90度的方向一致,定義旋轉角順時針方向為正時。其實應該有4種情況,圖上是下面提到的情況C。假如源坐標系的X是向上的(其實X軸向哪個方向都沒有關系,只要Y軸的正方向和X軸的正方向順時針旋轉90度的方向一致),Y是向右的,定義的旋轉角逆時針旋轉是正的,平面轉換四參數(shù)的計算公式如下(公式1):占F」*[(1十同代in( 十渝t舉⑹其中為新坐標,為兩個平移參數(shù),(1+m)為尺度,為旋轉角,為原坐標。這就是下面提到的情況A。公式1也可以用在情況C。則四參數(shù)公式可以寫成:c-dAydc(公式2)為了求解四參數(shù),把所有已知的和未知的矩陣寫在一起,構造出:的形式,然后再利用求解。公式2經(jīng)過展開,變成下面的形式:寫成矩陣的形式(公式3):aio血_了0]AX.01給兀]'d這樣我們就構造成了的形式,其中,,為原坐標系下某點的坐標,分別為原坐標系到新坐標系的平移量,,,其中(1+m)是尺度,為旋轉角。公式三就這樣變成了一個單純的矩陣運算,2個點的話恰好能求出四參數(shù),無法計算殘差,如果大于等于3個點,就可以計算出殘差,這實際上用了最小二乘法?,F(xiàn)在,我們來根據(jù)圖1的實際情況假設幾個比較接近情況的四參數(shù):假如原坐標系上有5個點,P1(0,15)P2(0,5)P3(3,0)P4(6,5)P5(6,15)其中P1(0,15)表示在原坐標系下,點P1的X坐標為0,Y坐標為15?,F(xiàn)在,把原坐標系(整個坐標系:包括原點,X軸,Y軸)的X,Y軸都縮短為原來的1/2,然后把整個坐標系逆時針旋轉30度,再把兩條坐標軸或者說整個坐標系向X軸的負方向移動(旋轉以后的X軸的正方向的反方向)4米(如果是負數(shù),那么應該向旋轉后的X軸的正方向移動個單位);同理,向Y軸的負方向移動3米(如果是負數(shù)就向正方向),經(jīng)過這3個步驟,原坐標系變成了新的坐標系,原來的5個點,它們在新坐標系下的坐標分別是:P1(-11.0,28.981)P2(-1.0,11.660)P3(9.196,6.0)P4(9.392,17.660)P5(-0.608,34.981)注意:P1P2P3P4P5并不同原坐標系一起旋轉!我們來看使用四參數(shù)的計算過程:doublec=fourP.Scale*Math.Cos(fourP.Rotate);doubled=fourP.Scale*Math.Sin(fourP.Rotate);公式4:aPtfNew.X=fourP.Xdelta+(c*aPtfOld.X-d*aPtfOld.Y);aPtfNew.Y=fourP.Ydelta+(d*aPtfOld.X+c*aPtfOld.Y);只有同意了這個公式才能討論下面的問題。那么,我們求出四參數(shù)到底有什么意義呢?假如我們用C#寫一個畫圖的程序,比如在picturebox中畫一個某一邊是尖頭的矩形。我們知道,picturebox的坐標系的原點在它的左上角,X軸是向指向右邊的,Y軸是指向下邊的。而測量坐標系中,X是指向上邊的(北),Y是指向右邊的(東),原點在左下角,為了方便用戶設計圖形,我們就用測量的坐標系來設計。在船體坐標系中,如下圖3(新坐標系,用戶定義的坐標系):用戶定災的船體坐標系如果我們把圖3中的船體坐標系去掉,沿著船的矩形邊緣建立一個類似于C#中的Picturebox的坐標系,那么在picturebox中各點坐標如下,如圖4(源坐標系,它恰好是下面提到的4種情況的情況A):C9Picturebox這個過程到底是什么轉換的呢?或許有些人一眼就看出了是picturebox坐標系先逆時針轉90度,然后再下方移動15個單位就變成了船體的坐標系。但是大多數(shù)人反應畢竟沒有那么快,還是有點暈的。所以現(xiàn)在我們看看可否通過四參數(shù)的求解,而不用畫圖或者憑借空間想象力來探討坐標系的變換:我們利用其中的兩個點的兩套坐標系,求出坐標系的變換參數(shù):P1(0,15) P2(0,5) 兩個點在源的坐標系中的坐標(picturebox坐標系)P1(0,0) P2(10,0) 兩個點在新的坐標系中的坐標(船體坐標系/用戶坐標系)求得的四參數(shù)是:(源坐標系的X向右,Y向下,逆時針旋轉Rotate為正)X平移二15.0Y平移二0.0旋轉(度)=90(逆時針)尺度=1.0我們用剛才對四參數(shù)的解釋來理解(按次序):1?不縮放2?逆時針旋轉90度3.向此刻的坐標系(僅是尺度變化和旋轉以后的形成的坐標系)的X方向的反方向移動15個單位。這里有一個誤區(qū),是很容易讓人混淆的地方。因為源坐標系和以前定義的不一樣了,X,Y的方向分別是向右和向下的,逆時針旋轉為正的。我通過作圖,得出的結論是存在4種情況:情況A?不管X是向哪個方向的(向上,向下,向左,向右或者任意方向),只要Y軸的正方向和X軸的正方向順時針旋轉90度的方向一致,而且定義旋轉角逆時針方向為正,那么用的公式也是公式1。測量上用得最多的情況是X向上,Y向右;也是實例中的picturebox的坐標系的情況。情況B.X向任意方向,Y軸的正方向和X軸的正方向順時針旋轉90度的方向一致,定義旋轉角順時針方向為正(數(shù)學坐標系用得比較多),那么公式是:顯然,情況C的四參數(shù)計算和求解完全和情況A不同,需要重新推導,如果直接用公式3來求四參數(shù)和公司4來計算點在新坐標系下的xy,計算出來的結果和理解的肯定不一樣。情況C.X向任意方向,Y軸的正方向和X軸的正方向逆時針旋轉90度的方向一致,定義旋轉角順時針方向為正時,得出的也是公式1。如前面的圖2顯示,公式同情況A是:情況A口情況C都可以用公式3來求四參數(shù),用公式4來計算點在新坐標系下的XY坐標。情況D?如果,X向任意方向,Y軸的正方向和X軸的正方向逆時針旋轉90度的方向一致,定義旋轉角逆時針方向為正,那么公式同情況B是:顯然,情況D的四參數(shù)計算和求解完全和情況A不同,需要重新推導,否則計算出來的結果和理解的肯定是錯的。回到剛才討論的應用的例子(船體坐標系和picturebox的轉換)這和視覺上看起來是一樣的,比較容易理解。這就恰恰是四參數(shù)的用武之地。而在C#的picturebox中,我們是如何利用四參數(shù)來為我們服務的呢?我們的想法是:重新定義picturebox的坐標系,讓它變成船體坐標系,然后直接在picturebox上面畫出5個船體坐標點的連線:P1(0,0)P2(10,0)P3(15,3)P4(10,6)P5(0,6)這其實有3個步驟(這要求我們把源坐標系和新坐標系顛倒過來看,就是說把picturebox坐標系當做源坐標系,這樣四參數(shù)就反過來了。而當源坐標系的X向右,Y向下,逆時針旋轉時,四參數(shù)的計算公式和源坐標X向):先在picShip的paint事件中利用ScaleTransform把比例尺調整成我們需要的坐標范圍,它本來是用象素做單位的,寫入e.Graphics.ScaleTransform(picShip.Width/6,picShip.Height/15)把它的水平軸范圍調整成[0,6],垂直的范圍調整成[0,15]e.Graphics.RotateTransform(-90.0F);//此句運行之后picShip的X坐標向上了,Y向右了。可視區(qū)域的范圍是x[-6,0]y[0,15]e.Graphics.TranslateTransform(-15,0);//把旋轉之后的坐標系再向下移動15個單位這些我花了將近一兩個星期的時間,始終不能理解,現(xiàn)在回頭過來探討1年前弄不清楚半知半解的東西——有點或然開朗的感覺。這些都不太好理解,挺惡心,但是為了以后不再恐懼,我們不如多花點時間把它徹底弄清楚,增強我們的信心和實力。試驗分析如下:假如picturebox的長為400象素,高為300象素。ScaleTransform(10,10)的作用是,把picturebox的水平軸X軸拉長10倍,垂直軸也拉長10倍。那么picturebox現(xiàn)在能顯示的范圍就變成了:水平[0,40]垂直[0,30]。而如果e.Graphics.ScaleTransform(0.1F,0.1F)之后,picturebox可顯示的范圍放大了10倍將變成:水平[0,4000]垂直[0,3000]//ScaleTransform的作用是對坐標軸X軸和Y軸進行縮放//pic能表達的范圍縮小了10倍e.Graphics.ScaleTransform(10,10);e.Graphics.DrawLine(Pens.Blue,newPointF(0,0),newPointF(39,29));2.//作用把當前的坐標系改變,新坐標系的原點在源坐標系的[100,10]位置//也就是說現(xiàn)在picturebox的左上角的坐標是[-100,-10]//pic現(xiàn)在能表達的范圍是:水平[-100,300]垂直[-10,290]//所以畫出的兩個點故意縮進了一下,這樣就能看到整條線的面貌。e.Graphics.TranslateTransform(100,10);e.Graphics.DrawLine(Pens.Blue,newPointF(-95,-5),newPointF(295,285));3.//RotateTransform的作用是對坐標系進行順時針的旋轉//這個比較復雜,而且不好理解//假如是順時針旋轉30度后形成新的坐標系,//那么當前pic的右上角的點在新坐標系下的坐標是(346.4,-200)//pic的左下角點在新坐標系中的坐標是[150,259.8]//pic的右下角點在新坐標系中的坐標是[496.4,59.8]e.Graphics.RotateTransform(30.0F);//連接到pic的右上角的點e.Graphics.DrawLine(Pens.Blue,newPointF(5,5),newPointF(340,-190));//連接到pic的左下角的點e.Graphics.DrawLine(Pens.Blue,newPointF(5,5),newPointF(155,250));//連接到pic的右下角的點e.Graphics.DrawLine(P
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年邵陽職業(yè)技術學院單招綜合素質考試模擬試題含詳細答案解析
- 2026年平?jīng)雎殬I(yè)技術學院單招職業(yè)技能考試備考題庫含詳細答案解析
- 2026年萬博科技職業(yè)學院單招綜合素質考試備考題庫含詳細答案解析
- 2026年山西警官職業(yè)學院單招職業(yè)技能考試模擬試題含詳細答案解析
- 2026年保定理工學院高職單招職業(yè)適應性測試模擬試題及答案詳細解析
- 2026年石家莊財經(jīng)職業(yè)學院單招綜合素質考試備考試題含詳細答案解析
- 2026年秦皇島職業(yè)技術學院單招綜合素質考試備考題庫含詳細答案解析
- 2026年廣東松山職業(yè)技術學院高職單招職業(yè)適應性測試備考試題及答案詳細解析
- 2026年山西工程職業(yè)學院單招綜合素質考試模擬試題含詳細答案解析
- 2026福建水投大田水務招聘3人考試重點試題及答案解析
- GB/T 19609-2024卷煙用常規(guī)分析用吸煙機測定總粒相物和焦油
- 公路工程標準施工招標文件(2018年版)
- DB45-T 2845-2024 超聲引導下針刀治療技術規(guī)范
- DL∕T 5776-2018 水平定向鉆敷設電力管線技術規(guī)定
- 2025屆浙江省杭州市英特外國語學校數(shù)學七年級第一學期期末監(jiān)測模擬試題含解析
- (正式版)JTT 728.2-2024 裝配式公路鋼橋+第2部分:構件管理養(yǎng)護報廢技術要求
- 施工、建設、監(jiān)理單位管理人員名冊
- 圍絕經(jīng)期管理和激素補充治療課件
- Rivermead行為記憶能力測試
- CNC加工中心點檢表
- GB/T 12224-2005鋼制閥門一般要求
評論
0/150
提交評論