• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      嵌入式開發(fā)測圖系統(tǒng)中圓弧算法的實現(xiàn)

      2012-11-05 08:53:48孫艷崇孫國平
      山西建筑 2012年34期
      關鍵詞:縱坐標方位角圓心

      孫艷崇 孫國平

      (1.遼寧省交通高等??茖W校,遼寧沈陽 110122;2.沈陽市勘察測繪研究院,遼寧沈陽 110004)

      1 概述

      在用VC語言開發(fā)繪圖程序中,主要利用的一個類是設備上下文對象類(CDC類),CDC類定義了一系列圖形對象及其相關的繪圖函數(shù),其中包括處理顯示器或打印機等設備上下文的成員函數(shù),以及處理與窗口客戶區(qū)對應的顯示上下文的成員函數(shù)等。

      在VC中,CDC類有成員函數(shù)Arc(),可以實現(xiàn)圓弧的繪制;使用此函數(shù)時,需要已知圓弧的外切矩形的四個角點的坐標,以及圓弧起點和端點的坐標。而在EVC中,其CDC類中沒有繪制圓弧的函數(shù),所以在用EVC開發(fā)測圖系統(tǒng)時,其中圓弧的繪制函數(shù)需要自行編制;圓弧繪制函數(shù)的算法有很多,本文介紹了一種新的三點繪制圓弧的算法,其思路是采用坐標正反算法,按一定圓心角計算圓弧點的坐標,然后利用繪制直線的函數(shù)(MoveTo()和LineTo()),采用直線逼近的方法實現(xiàn)。

      2 坐標正反算簡介

      1)坐標方位角的定義。

      在測繪學科中,為了計算坐標的方便,除了需要知道距離,還需要知道方向,這一方向是通過坐標方位角來描述的,坐標方位角的定義是從某點的坐標縱軸方向線起,依順時針方向到目標方向線之間的水平夾角。

      2)坐標正算。

      坐標正算,就是根據(jù)直線的邊長、坐標方位角和一個端點的坐標,計算直線另一個端點的坐標的工作。

      3)坐標反算。

      根據(jù)直線的起點和終點的坐標,計算直線的水平距離和坐標方位角的過程叫坐標反算。

      3 圓弧算法的實現(xiàn)

      3.1 定義圓弧類

      在用EVC開發(fā)測圖系統(tǒng)中,各圖元的繪制都是以類的形式實現(xiàn)的,且由于所繪制的圖形要加以保存,所以相關的圖元類要直接或間接的從Cobject類派生,這樣就可以實現(xiàn)類的串行化,從而實現(xiàn)圖形數(shù)據(jù)的保存。下面介紹三點繪制圓弧的類中,同圓弧繪制相關的數(shù)據(jù)成員及成員函數(shù)的定義。

      double radius;

      //定義圓弧的半徑

      void centerandradius(double x1,x2,x3,y1,y2,y3);

      //通過弧上的三點,計算圓弧的圓心坐標和半徑,并對center_x,center_y及 radius賦值

      double azimuth(double f_x,double f_y,double e_x,double e_y);

      //計算一條直線的坐標方位角,以弧度為單位

      void arc(CPoint point[3],CDC*pdc);

      //通過給定的三點及窗口的句柄,在特定的窗口,按順時針繪制圓弧

      };

      3.2 通過三點計算圓弧的圓心坐標和半徑

      實現(xiàn)三點圓弧的繪制,需要首先計算出圓弧的圓心和半徑,其計算方法是:通過給定的三點組成一個三角形,然后構(gòu)造出任意兩條邊的垂直平分線的直線方程,最后對這兩條直線方程求解,即可計算出圓弧的圓心坐標,從而通過圓心坐標和給定三點中的任意一點計算圓弧的半徑。其圓弧的圓心坐標和半徑的計算函數(shù)如下:

      3.3 計算圓心到起始方向的坐標方位角

      測量學中,方位角的定義是:沿坐標北方向順時針旋轉(zhuǎn)到該直線的角度,在計算圓弧上點的坐標時,首先選定圓弧的起始點和終止點,然后分別計算出起點到圓心的坐標方位角和終點到圓心的坐標方位角。

      其函數(shù)的具體實現(xiàn)如下:

      //計算起點或端點到圓心的橫坐標增量double D_x=e_x-f_x;

      //計算起點或端點到圓心的縱坐標增量

      if(D_x==0&&D_y>0)

      return pi/2;

      //如果縱坐標增量等于0,且橫坐標增量大于0,坐標方位角等于 π/2(90°)

      else if(D_x==0&&D_y<0)

      return pi/2+pi;

      //如果縱坐標增量等于0,且橫坐標增量小于0,坐標方位角等于 π/2+π(270°)

      else

      {double azimth=atan(D_y/D_x);if(D_x<0)

      return azimth+pi;

      //如果縱坐標增量小于0,坐標方位角等于計算的反正切值加上π的和

      else

      return azimth;

      //如果縱坐標增量大于0,坐標方位角等于計算出的反正切值,此時計算的方位角可能出現(xiàn)負值,但對后面圓弧點的坐標計算公式?jīng)]有影響,所以可以直接返回計算的反正切值

      }}

      3.4 實現(xiàn)三點圓弧繪制的函數(shù)

      在實現(xiàn)三點圓弧繪制的函數(shù)中,需要調(diào)用函數(shù)centerandradius(),獲取圓心坐標和半徑,然后調(diào)用方位角計算函數(shù)azimuth()計算起終點到圓心的坐標方位角,最后按一定圓心角間隔計算圓弧點的坐標,其函數(shù)的具體實現(xiàn)如下:

      //通過圓弧上的三點獲取圓弧的圓心坐標及半徑

      const double PI=3.1415926;

      double azimuth1=azimuth(center_x,center_y,point[0].x,point[0].y);

      //計算起點到圓心的坐標方位角

      double azimuth2=azimuth(center_x,center_y,point[2].x,point[2].y);

      //計算終點到圓心的坐標方位角

      doublemaxnum=azimuth2-azimuth1;

      //計算起終點到圓心的坐標方位角的差值

      if(maxnum<0)

      {maxnum=maxnum+(2*PI);

      //計算的差值如是負數(shù),需要加上2π

      4 結(jié)語

      在嵌入式開發(fā)測圖系統(tǒng)時發(fā)現(xiàn):用VC開發(fā)桌面繪圖系統(tǒng)比較容易實現(xiàn)的功能,例如:圖形的無極縮放、樣條曲線函數(shù)的繪制及圖元屬性的定義等等,在EVC開發(fā)嵌入式繪圖系統(tǒng)中,要想實現(xiàn)這些功能,都是較麻煩的,因為在EVC中沒有實現(xiàn)此功能的基本函數(shù),所有功能都需要用戶從底層自己開發(fā)。將計算機技術的進步與測繪工程實踐相結(jié)合,可以極大提高生產(chǎn)效率、降低生產(chǎn)成本,直接在WinCE GPS手簿上開發(fā)測圖系統(tǒng)相比在PDA上開發(fā)更加方便,因為省去了全站儀和PDA數(shù)據(jù)通訊的開發(fā)環(huán)節(jié),這樣降低了開發(fā)周期,而且用GPS進行數(shù)據(jù)采集相比全站儀更加方便快捷,因為只要將基準站架設好之后,不用轉(zhuǎn)站就可以用流動站采集數(shù)據(jù)?;谝陨蟽?yōu)點,直接在WinCE GPS手簿上開發(fā)成圖系統(tǒng)能提高工作效率,這也將成為數(shù)字化測圖的一個新的發(fā)展方向。

      [1]孫 群.數(shù)字測圖系統(tǒng)研制報告[R].鄭州:解放軍信息工程大學測繪學院,2005.

      [2]顧孝烈,鮑 峰.測量學[M].上海:同濟大學出版社,2006.

      [3]傅 曦,齊 宇.嵌入式系統(tǒng)Windows CE開發(fā)技巧與實例[M].北京:化學工業(yè)出版社,2004.

      猜你喜歡
      縱坐標方位角圓心
      二次曲線的一個類似圓心的性質(zhì)
      變化的“魚”
      更正
      勘 誤
      探究無線電方位在無線電領航教學中的作用和意義
      卷宗(2021年2期)2021-03-09 07:57:24
      近地磁尾方位角流期間的場向電流增強
      以圓周上一點為圓心作圓的圖的性質(zhì)及應用
      向量內(nèi)外積在直線坐標方位角反算中的應用研究
      河南科技(2015年18期)2015-11-25 08:50:14
      第五屆播睿智杯“奇思妙想”有獎數(shù)學知識競賽
      基于對話框編寫實現(xiàn)坐標方位角正算與反算的程序
      城市勘測(2013年5期)2013-03-06 05:44:13
      惠东县| 白银市| 盖州市| 呼和浩特市| 获嘉县| 正阳县| 原平市| 铜梁县| 手游| 扬州市| 平阳县| 永嘉县| 凯里市| 滁州市| 峡江县| 资兴市| 泸西县| 桃江县| 长顺县| 牙克石市| 绥芬河市| 临沭县| 榆林市| 博白县| 永州市| 民丰县| 循化| 衡水市| 清涧县| 巴彦县| 保靖县| 麟游县| 原阳县| 宝鸡市| 淅川县| 塔城市| 灌南县| 北安市| 富民县| 九江市| 绥中县|