• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            socketref,再見(jiàn)!高德

            https://github.com/adoggie

              C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
              246 Posts :: 4 Stories :: 312 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(54)

            我參與的團(tuán)隊(duì)

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            #

            apache gzip 配置
            2009-08-31 10:38:15
            標(biāo)簽:apache 配置 gzip
            版權(quán)聲明:原創(chuàng)作品,謝絕轉(zhuǎn)載!否則將追究法律責(zé)任。
            1、conf/httpd.conf
            1) 去掉#LoadModule headers_module modules/mod_headers.so前面的注釋#,
            2) 添加LoadModule deflate_module modules/mod_deflate.so,
            3) 去掉#Include conf/extra/httpd-vhosts.conf前面的注釋#。
             
            2、conf/extra/httpd-vhosts.conf
            在VirtualHost中添加
                <Location "/">
                    SetOutputFilter DEFLATE
                    BrowserMatch ^Mozilla/4 gzip-only-text/html
                    BrowserMatch ^Mozilla/4\.0[678] no-gzip
                    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
                    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
                    Header append Vary User-Agent env=!dont-vary
                </Location>
            例如:
            <VirtualHost *:80>
                DocumentRoot "D:/Apache2.2/htdocs/wef"
                <Location "/">
                    SetOutputFilter DEFLATE
                    BrowserMatch ^Mozilla/4 gzip-only-text/html
                    BrowserMatch ^Mozilla/4\.0[678] no-gzip
                    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
                    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
                    Header append Vary User-Agent env=!dont-vary
                </Location>
            </VirtualHost>
             
             
            注:我使用的apache版本為2.2.13。
            posted @ 2011-01-15 21:53 放屁阿狗 閱讀(989) | 評(píng)論 (0)編輯 收藏

            編輯qt.conf
            添加如下信息
            [Paths]
            Pluggins=plugins
            拷貝qt/bin/plugins到當(dāng)前目錄

            posted @ 2010-12-28 17:13 放屁阿狗 閱讀(284) | 評(píng)論 (0)編輯 收藏

            1.static方法可以不要參數(shù),和C/C++,java里面的靜態(tài)函數(shù)相似
            2.普通對(duì)象函數(shù)至少需要一個(gè)self參數(shù),該參數(shù)命名可以是‘self’,也可以是其他。代表類實(shí)例對(duì)象
            3.class方法至少需要一個(gè)cls參數(shù),該參數(shù)命名可以是‘cls’,也可以是其他。代表類對(duì)象


            posted @ 2010-12-08 13:42 放屁阿狗 閱讀(664) | 評(píng)論 (0)編輯 收藏

            找了臺(tái)快速的公網(wǎng)機(jī)器來(lái)做演示(網(wǎng)通線路訪問(wèn)還是很慢):
            http://wallizard.vicp.net/maps/test/test_map.html
            http://wallizard.vicp.net:8080/
            提供ftp下載 swmap.demo.2010.11.20.7z
            ftp://122.227.135.172:8502
            user: mapdown
            passwd: mapdown
            demo包含c/s,b/s功能和全國(guó)地圖數(shù)據(jù),共170M左右,可以直接架設(shè)起一臺(tái)wms地圖服務(wù)器

            posted @ 2010-12-03 16:23 放屁阿狗 閱讀(1845) | 評(píng)論 (4)編輯 收藏

            swMap提供基礎(chǔ)的Gis發(fā)布功能,目前swMap提供c/s,b/s兩種服務(wù)功能,b/s也就是webgis, apache+openlayers+swGisServer服務(wù)器構(gòu)成了webgis的地圖支持體系。

                    c/s模式現(xiàn)僅提供基于Qt的C++開(kāi)發(fā)接口,c/s模式可以是本地渲染地圖(可用于單機(jī)導(dǎo)航,支持win32,wince,linux),也可以rpc方式訪問(wèn)地圖服務(wù)器,之間采用特殊的通信協(xié)議。
                演示:  http://wallizard.vicp.net/maps/test/test_map.html 這是adsl主機(jī),上行出口比較窄,所以顯示地圖會(huì)慢很多


               
               
                Demo下載:http://wallizard.vicp.net/maps/swmap.demo.2010.11.20.7z
                demo包含c/s,b/s功能和全國(guó)地圖數(shù)據(jù),共170M左右,可以直接架設(shè)起一臺(tái)wms地圖服務(wù)器

              系統(tǒng)結(jié)構(gòu):


             1. c/s 配置: 
            1.1 單機(jī)模式:
            a.) 修改swBox/swbox.xml參數(shù)
            EnableTileCache = false
            cachethreads = 3
            asyncRender = true
            b.) 運(yùn)行swBox/swbox.exe

            1.2 Rpc模式(地圖與客戶應(yīng)用分離)
            a.) 修改swbox.xml參數(shù)
            EnableTileCache = true
            cachethreads = 3
            asyncRender = true
            增加<tileservers/>的子條目
            <server>TileServer:tcp -h localhost -p 5000</server>
            -h 地圖服務(wù)器主機(jī)地址 ; -p 服務(wù)端口。根據(jù)實(shí)際情況可以配置多個(gè)TileServer來(lái)提高并發(fā)能力
            b.)修改Tileserver.xml
            realRender = true
            確保 scales與 swbox.xml的scales保持一致,中間以空格區(qū)分
            c.)運(yùn)行TileServer.exe -rpcservice localhost:5000
            可以并行啟動(dòng)多個(gè)TileServer,同一臺(tái)主機(jī)以端口號(hào)區(qū)分
            d.)運(yùn)行 swbox.exe

            2.b/s 配置
            2.1 解壓apache2.2.pack_maps.rar到c:\apache2.2.pack
            2.2 安裝apache2.2
            執(zhí)行C:\apache2.2.pack\http-install.bat
            執(zhí)行C:\apache2.2.pack\http-start.bat
            2.3 安裝GisServer
            編輯tileservers.txt ,增加服務(wù)器信息,例如:
            localhost:5000,localhost:5001
            執(zhí)行wms_start.bat ,服務(wù)器默認(rèn)啟動(dòng)在8000端口開(kāi)始偵聽(tīng)
            2.4 運(yùn)行 TileServer.exe -rpcservice localhost:5000
            為提高并發(fā)能力多啟動(dòng)幾個(gè)Tileserver,并添加到swGisServer的tileservers.txt文件內(nèi)
            swGisServer和TileServer都可以以n x n的方式配置來(lái)提高整體 系統(tǒng)的吞吐能力
            2.5 修改 c:/apache2.2.pack/web-root/test/test_map.html內(nèi)的wms服務(wù)器的指向,將http://wallizard.vicp.net:8000/wms替換成GisServer運(yùn)行主機(jī)的地址和端口
            打開(kāi)瀏覽器訪問(wèn)http://localhost:9000/test/test_map.html

            3.塊緩存
            塊緩存技術(shù)就是預(yù)先將全國(guó)的地理區(qū)域劃分成網(wǎng)格按縮放級(jí)別繪制并存儲(chǔ)起來(lái),待請(qǐng)求到達(dá)時(shí)直接讀取圖塊并返回(wms,Rpc).
            當(dāng)然這種是最高效的方法 ,但往往時(shí)間和空間是相背的,緩存的話雖然能降低對(duì)機(jī)器的性能要求,但會(huì)大大占用存儲(chǔ)空間。
            緩存技術(shù)可以用低配置高帶寬的主機(jī)提供集群的地圖服務(wù)。
            Tileserver/spliteTiles.py 產(chǎn)生網(wǎng)格緩沖任務(wù),Tileserver.exe -mapcreate 可以進(jìn)行地圖網(wǎng)格預(yù)存的工作

            4.風(fēng)格定制:
            swMap地圖當(dāng)配置成實(shí)時(shí)模式(非緩存)時(shí),修改mapsld.xml就可以立刻生效繪制效果,但是要重新啟動(dòng) tileserver服務(wù)進(jìn)程 。
            <win7下的微軟雅黑字體顯示效果頗佳>

            5.運(yùn)行環(huán)境:
            windows xp,2003,win7
            安裝vc運(yùn)行環(huán)境包 vcredist_x86.exe
            win7環(huán)境下微軟雅黑字體 vistaFont_CHS.exe
            全國(guó)地圖數(shù)據(jù)

            posted @ 2010-11-24 09:47 放屁阿狗 閱讀(1696) | 評(píng)論 (0)編輯 收藏

            bbox 計(jì)算中心點(diǎn)
            size 組合bbox計(jì)算顯示精度,根據(jù)經(jīng)度計(jì)算網(wǎng)格編號(hào) x,y和縮放級(jí)別
            有了這些參數(shù)通過(guò)TileServer(Rpc)請(qǐng)求網(wǎng)格圖塊
            TileServer可以配置成網(wǎng)格文件讀取或者是RealRender實(shí)時(shí)繪制
            TileServer判斷bbox如果跨越兩個(gè)網(wǎng)格,且不是實(shí)時(shí)繪制的話,必須完成兩個(gè)網(wǎng)格圖像的拼接,這樣便能實(shí)現(xiàn)openlayers的resolution不一定要求跟后端一樣的,當(dāng)然TileServer在產(chǎn)生網(wǎng)格時(shí)還是需要去尋找一個(gè)最接近的縮放級(jí)別(實(shí)時(shí)繪制沒(méi)有這個(gè)操作)


            posted @ 2010-11-19 11:33 放屁阿狗 閱讀(289) | 評(píng)論 (0)編輯 收藏

             1 #################################
             2 # swMap Test 
             3 # scott  
             4 # 2010.11.19
             5 # wallizard.vicp.net sw2us.com
             6 #################################
             7 #simplest http server 
             8 # expose image 
             9 #
            10 
            11 import BaseHTTPServer,SocketServer,SimpleHTTPServer 
            12 import time,sys,os,os.path
            13   
            14 
            15 class MyThreadServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer): pass
            16 
            17 '''
            18 HTTP/1.1 200 OK
            19 Cache-Control: private, max-age=30
            20 Content-Type: text/html; charset=utf-8
            21 Content-Encoding: gzip
            22 Expires: Mon, 25 May 2009 03:20:33 GMT
            23 Last-Modified: Mon, 25 May 2009 03:20:03 GMT
            24 Vary: Accept-Encoding
            25 Server: Microsoft-IIS/7.0
            26 X-AspNet-Version: 2.0.50727
            27 X-Powered-By: ASP.NET
            28 Date: Mon, 25 May 2009 03:20:02 GMT
            29 Content-Length: 12173
            30 '''
            31 '''
            32 Pragma:no-cache
            33 Cache-Control:no-cache
            34 '''
            35 
            36 class MyHander(SimpleHTTPServer.SimpleHTTPRequestHandler):
            37     def __init__(self,request, client_address, server):
            38         SimpleHTTPServer.SimpleHTTPRequestHandler.__init__(self,request, client_address, server)
            39     
            40     def do_GET(self):
            41         print self.headers         
            42         
            43         f= open('d:/nono.gif','rb')
            44         image  = f.read()
            45         f.close()
            46         
            47         self.send_response(200)
            48         self.send_header( 'Server','swMapServer')
            49         now = self.date_time_string(time.time())        
            50         self.send_header('Date',now)
            51         self.send_header('Content-Type','image/gif')
            52         self.send_header('Content-Length',len(image))
            53         self.end_headers()
            54         
            55         self.wfile.write(image)
            56 
            57 def run(server_class=MyThreadServer,handler_class=MyHander):
            58     server_address = (''8000)
            59     httpd = server_class(server_address, handler_class)
            60     print 'serve on ',server_address
            61     httpd.serve_forever()
            62 
            63     
            64 run()

            posted @ 2010-11-19 09:57 放屁阿狗 閱讀(633) | 評(píng)論 (-2)編輯 收藏

                TileCache從去年開(kāi)始使用已經(jīng)有一段時(shí)間了,之前是為了配合GeoServer來(lái)產(chǎn)生緩存網(wǎng)格塊,之后在3-8月份處于停滯狀態(tài),到9月份身體開(kāi)始恢復(fù)就重新啟動(dòng)swMap工程,徹底拋棄了GeoServer(效率和安裝運(yùn)行環(huán)境不能滿足要求)。在使用geoServer期間,采用Tilecache產(chǎn)生了千萬(wàn)的tile圖塊,默認(rèn)是存放在文件系統(tǒng),產(chǎn)生的Tile在備份遷移的時(shí)候令我寒心,那么多的文件拷貝每次都要耗費(fèi)4,5個(gè)小時(shí),考慮到這種情況,我自己編寫(xiě)了TileCache的Store Backend,將Tilecache產(chǎn)生的Tile存儲(chǔ)進(jìn)PostGresDB,這樣我只要備份DB就可以了。
                隨即而來(lái)的是放棄Geoserver,自己重新開(kāi)發(fā)地圖渲染服務(wù)器,使用了QT令我效果滿意,那再使用那一套GeoServer的東西就不合時(shí)宜了,TileCache也是需要綁定Apache+mod_python才能工作,簡(jiǎn)直太累最了,配置個(gè)環(huán)境還是不太容易,想想自己只是想提供一個(gè)WMS的服務(wù)罷了何必那么麻煩呢。 地圖服務(wù)器也有了,產(chǎn)生CacheTiles也開(kāi)發(fā)了自動(dòng)化的工具,將全國(guó)不同顯示比例的圖塊按256x256規(guī)格分別放入多個(gè)文件,這樣備份起來(lái)就快速多了。
                之前看過(guò)TileCache的代碼,那時(shí)候只是為了編寫(xiě)一個(gè)新的Cache Store backend,現(xiàn)在重新回過(guò)頭來(lái),我決定拋棄apache,語(yǔ)言還是用python,之前做一個(gè)酒店廣告投放系統(tǒng)時(shí)開(kāi)發(fā)過(guò)一個(gè)Http代理服務(wù)器,所以輕車(chē)熟路了,保留其Http服務(wù)功能,加上TileCache的WMS服務(wù)代碼,一個(gè)swMap的WMS 服務(wù)器就可以誕生了。
                端詳了一會(huì)兒TileCache,發(fā)現(xiàn)是多么的簡(jiǎn)單,幾乎不用多修改什么地方就可以完成。
                由于我的swMap服務(wù)程序提供了預(yù)先緩存和實(shí)時(shí)繪制地圖的功能,所以通過(guò)Http可以以兩種模式進(jìn)行,當(dāng)然實(shí)時(shí)模式是用于調(diào)試地圖層SLD時(shí)派上大用場(chǎng)。
                實(shí)時(shí)繪制的時(shí)候我的WMS服務(wù)器通過(guò)Ice連接到swMap服務(wù)器,當(dāng)緩存訪問(wèn)時(shí)我的WMS服務(wù)器直接從本地Tile文件中讀取,那時(shí)多么舒服的事情哪!




            posted @ 2010-11-18 16:49 放屁阿狗 閱讀(992) | 評(píng)論 (0)編輯 收藏

            1. 修改httpserver+tilecache,使 swMap具有WMS功能,支持openlayers訪問(wèn)
            2. 繼續(xù)增加swBox功能,諸如: 測(cè)距、圍欄、自定義用戶興趣點(diǎn)、面積計(jì)算
            3. 緩沖全國(guó)圖tile到緩存文件,最低比例1:2000,由于是全國(guó)性的預(yù)先繪制工作,會(huì)消耗很大的磁盤(pán)空間和處理時(shí)間,估計(jì)3臺(tái)4核的PC連續(xù)1個(gè)星期工作時(shí)間
            4. 開(kāi)發(fā)基于swBox的基本應(yīng)用,增加POI搜尋和MapGrab功能(用戶可以指定地理范圍產(chǎn)生指定顯示精度的大幅圖像,比如可以抓取1:4000的整個(gè)上海城區(qū)圖到一個(gè)jpg文件)
            5. 增加矢量運(yùn)算操作進(jìn)行道路匹配
            6. 增加GPS簡(jiǎn)易的定位功能,多個(gè)移動(dòng)對(duì)象之間的位置拓?fù)潢P(guān)機(jī)的操作,支持軌跡回放和導(dǎo)出功能
            7. swBox增加Wince版本


            posted @ 2010-11-18 16:32 放屁阿狗 閱讀(439) | 評(píng)論 (0)編輯 收藏

             GIS中的計(jì)算幾何


            GIS是一個(gè)圖形系統(tǒng),必然會(huì)涉及到幾何學(xué)的理論應(yīng)用,比如,圖形可視化,空間拓?fù)浞治觯珿IS圖形編輯等都需要用到幾何

            。向量幾何是用代數(shù)的方法來(lái)研究幾何問(wèn)題,首先,請(qǐng)大家翻一翻高等數(shù)學(xué)里有關(guān)向量的章節(jié),熟悉一下幾個(gè)重要的概念:

            向量、向量的模、向量的坐標(biāo)表示、向量的加減運(yùn)算、向量的點(diǎn)積、向量的叉積,以及這些概念的幾何意義...下面我們將用

            這些基本概念來(lái)解答GIS中一些幾何問(wèn)題。
            1   點(diǎn)和線的關(guān)系

                    點(diǎn)是否在線段上,這樣的判斷在圖形編輯,拓?fù)渑袛?比如,GPS跟蹤點(diǎn)是否跑在線上)需要用到這樣的判斷。通常的

            想法是:先求線段的直線方程,再判斷點(diǎn)是否符合這條直線方程,如果符合,還要判斷點(diǎn)是否在線段所在的矩形區(qū)域(MBR)內(nèi)

            ,以排除延長(zhǎng)線上的可能性,如果不符合,則點(diǎn)不在線段上。這種思路是可行的,但效率不高,涉及到建立方程,解方程。

            借助向量的叉積(也叫向量的向量積,結(jié)果還是向量,有方向的)可以很容易的判斷。設(shè)向量a=(Xa,Ya,Za)  b=(Xb,Yb,Zb) 

            向量叉積a X b如下:

            二維向量叉積的模 |a X b|=|a|*|b|*sinα=|Xa*Yb-Ya*Xb| (α是向量a,b之間的夾角),向量叉積模的幾何意義是以向量a,b

            為鄰邊的平行四邊形的面積。可以推測(cè):如果兩向量共線,向量叉積模(所代表的

            平行四邊形的面積) 為零 則                      
            |a X b|=|a|*|b|*sinα=|Xa*Yb-Ya*Xb|=0,否則不共線,叉積的模為非零,根據(jù)這樣條件可以很輕松的判斷點(diǎn)和線的關(guān)系,避

            免了建立方程和解方程的麻煩。
             

                    向量叉積的模|AB X AC|=0即可判斷C點(diǎn)在AB所確定的直線上,再結(jié)合C點(diǎn)是否在AB所在的MBR范圍內(nèi),就可以最終確

            定C是否在AB線段上。關(guān)于點(diǎn)和線段的其他關(guān)系,都可以通過(guò)叉積的求得,比如 判斷點(diǎn)在線的哪一側(cè),右手法則,可以通過(guò)a

            X b= (Xa*Yb-Ya*Xb)*k中的(Xa*Yb-Ya*Xb)正負(fù)來(lái)判斷。留給大家思考,很簡(jiǎn)單的,呵呵…
            2   線和線的關(guān)系
                    判斷兩條線段是否相交,在很多拓?fù)渑袛嗪蛨D形編輯 (比如,線的打斷來(lái)構(gòu)建拓?fù)洌庉嬀€對(duì)象,疊置分析,面與

            面關(guān)系的判斷等) 中都需要用到線線相交的判斷,如果兩條線段相交,一條線段的兩端點(diǎn)必然位于另一條線段的兩側(cè)(不考

            慮退化情況,也就是一條線段的端點(diǎn)在另一條線段上,這個(gè)很容易判斷)
             

            兩向量的叉積a X b= (Xa*Yb-Ya*Xb)*k ,分別判斷AB X AC的方向與AB X AD的方向是否異號(hào),再判斷CD X CA 的方向與CD X

            CB的方向是否異號(hào),即可判斷兩線段是否相交。

            退化情況,即一條線的端點(diǎn)落在另一條線上。運(yùn)用”點(diǎn)是否在線段上”的方法來(lái)判定。詳細(xì)區(qū)分留給大家思考。呵呵…
                    利用向量的方向還可以判斷線段的轉(zhuǎn)向,這個(gè)在道路導(dǎo)航中有所應(yīng)用:
            3   點(diǎn)和面的關(guān)系

            在各種拓?fù)渑袛嘀校ū热纾鎸?duì)象的選取,包含關(guān)系的判斷等)需要判斷一個(gè)點(diǎn)是否位于某個(gè)面內(nèi),經(jīng)典的方法就是“垂線法

            ”,在直角坐標(biāo)系中,從這個(gè)點(diǎn)向X軸作射線,判斷射線與多邊形的交點(diǎn)個(gè)數(shù)(不考慮退化情況,退化情況下,判斷點(diǎn)或者射

            線與多邊形端點(diǎn)或者邊的關(guān)系),如果為奇數(shù),則點(diǎn)在面內(nèi),為偶數(shù),則點(diǎn)在面外。
            4    線和面的關(guān)系

            線面關(guān)系的判斷相對(duì)比較復(fù)雜,線在面內(nèi),線和面相交,相離,相接等關(guān)系。線段在面內(nèi),第一個(gè)必要條件是,線段的兩個(gè)

            端點(diǎn)都要在內(nèi)。但由于多邊形可能為凹,所以這不能成為判斷的充分條件,于是有第二個(gè)必要條件線段與多邊形的邊,沒(méi)有

            內(nèi)部交點(diǎn)。

                    線段和多邊形交于線段的兩端點(diǎn)并不會(huì)影響線段是否在多邊形內(nèi);但是如果多邊形的某個(gè)頂點(diǎn)和線段相交,還必須

            判斷兩相鄰交點(diǎn)之間的線段是否包含于多邊形內(nèi)部,如果在面內(nèi),則線段在面內(nèi),否則不在面內(nèi)。
             

            所以,算法思路如下(本算法引用網(wǎng)絡(luò)上一篇文章):

                 if 線段PQ的端點(diǎn)不都在多邊形內(nèi)
                    then return false;
                點(diǎn)集pointSet初始化為空;
                  for 多邊形的每條邊s
                    do if 線段的某個(gè)端點(diǎn)在s上
                         then 將該端點(diǎn)加入pointSet;
                       else if s的某個(gè)端點(diǎn)在線段PQ上
                         then 將該端點(diǎn)加入pointSet;
                       else if s和線段PQ相交 // 這時(shí)候已經(jīng)可以肯定是內(nèi)交了
                         then return false;
                將pointSet中的點(diǎn)按照X-Y坐標(biāo)排序;
                  for pointSet中每?jī)蓚€(gè)相鄰點(diǎn) pointSet[i] , pointSet[ i+1]
                    do if pointSet[i] , pointSet[ i+1] 的中點(diǎn)不在多邊形中
                         then return false;
                  return true;

            注:X-Y坐標(biāo)排序,X坐標(biāo)小的排在前面,對(duì)于X坐標(biāo)相同的點(diǎn),Y坐標(biāo)小的排在前面,這種排序準(zhǔn)則也是為了保證水平和垂直

            情況的判斷正確。

            1.       點(diǎn)在面內(nèi),線段相交情況的判斷見(jiàn)上面的思路。

            2.       這個(gè)過(guò)程中的排序因?yàn)榻稽c(diǎn)數(shù)目肯定遠(yuǎn)小于多邊形的頂點(diǎn)數(shù)目n,所以最多是常數(shù)級(jí)的復(fù)雜度,幾乎可以忽略不計(jì)

            。因此算法的時(shí)間復(fù)雜度也是O(n)。

            3.       有了線段和面的關(guān)系,再判斷折線與面的關(guān)系,也就可以for循環(huán),同理進(jìn)行判斷了,但時(shí)間復(fù)雜度將是O(n^2)。

            后面將介紹一種時(shí)間復(fù)雜度為O(nlogn)的”平面掃描算法”。

            5    面和面的關(guān)系

            面面的空間關(guān)系,可能要更復(fù)雜一些,在拓?fù)渑袛啵噙呅委B置分析,面對(duì)象的編輯中,有著廣泛的應(yīng)用。這個(gè)將在以后的

            章節(jié)中介紹一種時(shí)間復(fù)雜度為O(nlogn)的算法“平面掃描算法”。
            6    點(diǎn)到線段的距離
                    點(diǎn)到線段的距離,在各種測(cè)量,拓?fù)渑袛?比如,線對(duì)象的選取中需要比較距離)中都需要用到。大家對(duì)點(diǎn)到直線的

            距離,都很熟悉,那點(diǎn)到線段距離又該如何計(jì)算呢?
             
                    問(wèn)題的關(guān)鍵是判斷a、r的角度,向量的點(diǎn)積能判斷一個(gè)角是鈍角還是銳角,先復(fù)習(xí)一下向量的點(diǎn)積,也叫向量的數(shù)

            量積,結(jié)果是一個(gè)數(shù),沒(méi)有方向。設(shè)向量a=(Xa,Ya,Za)  b=(Xb,Yb,Zb) 

            a . b=|a|*|b|*cosα=Xa*Xb+Ya*Yb+Za*Zb 向量點(diǎn)積的幾何意義是,高中物理中,求作用力在一個(gè)方向上所作的功。如果a .

            b>0,則α為銳角,a . b<0,則α鈍角。

            熟悉了利用向量的點(diǎn)積來(lái)判斷角度,AC·AB 判斷夾角a,BA·BC判斷夾角r,即可確定三種情況中,具體是哪一種。至于第一種

            情況,求點(diǎn)到垂足的距離,可以饒開(kāi)建立方程求垂足,再求兩點(diǎn)距離的思路,因?yàn)榻⒎匠踢\(yùn)算是復(fù)雜的,多耗了CPU資源。

            利用向量叉積的幾何意義來(lái)求,向量的叉積表示以兩向量為鄰邊的平行四邊形的面積,|AC X AB|為⊿ABC的面積的兩倍,求

            平行四邊形的高,只要用面積除以底邊AB的長(zhǎng)度。即,高CD的長(zhǎng)度=|AC X AB|/distance(AB)。

            這些復(fù)雜的幾何判斷,都將在空間索引的過(guò)濾下,在少量數(shù)據(jù)集(侯選集)上進(jìn)行。計(jì)算幾何算法,通常是比較復(fù)雜,比較耗

            CPU資源,而且還要考慮各種退化情況,在這里,并不試圖向大家窮舉各種情況,只想起一個(gè)拋磚引玉的作用, 或許還有人

            會(huì)有這樣的疑慮:有沒(méi)考慮“投影”的問(wèn)題?關(guān)于投影將在相應(yīng)的章節(jié)中給予解釋,但有一點(diǎn)是可以肯定的,空間分析、計(jì)算

            幾何算法,都是在平面直角坐標(biāo)系下運(yùn)算的,不會(huì)在球面上。


            posted @ 2010-11-12 15:59 放屁阿狗 閱讀(868) | 評(píng)論 (0)編輯 收藏

            僅列出標(biāo)題
            共25頁(yè): First 6 7 8 9 10 11 12 13 14 Last 
            91精品国产综合久久香蕉 | 成人综合久久精品色婷婷| 午夜精品久久久久久久久| 久久国产高清一区二区三区| 久久天天躁狠狠躁夜夜躁2O2O| 激情五月综合综合久久69| 欧美丰满熟妇BBB久久久| 热RE99久久精品国产66热| 99久久婷婷免费国产综合精品| 漂亮人妻被中出中文字幕久久 | 色欲久久久天天天综合网| 久久久久久极精品久久久| 久久香蕉一级毛片| 欧美午夜精品久久久久免费视| 亚洲精品无码久久不卡| 一本色道久久88加勒比—综合| 色综合久久中文字幕无码| 久久久久人妻一区二区三区| 青青青青久久精品国产h久久精品五福影院1421 | 亚洲国产成人久久综合区| 国产成人无码精品久久久免费 | 久久人妻少妇嫩草AV无码专区| 性做久久久久久久久老女人| 国产成人精品久久亚洲高清不卡| 国产精品久久久久久福利69堂| 久久青青草原亚洲av无码app | 亚洲精品乱码久久久久久久久久久久 | 99久久精品国产一区二区| 伊人久久国产免费观看视频| 久久久久亚洲AV无码去区首| 久久成人精品| 久久精品二区| 久久精品国产精品亚洲人人| 狠狠人妻久久久久久综合| 久久中文娱乐网| 国产成人精品久久亚洲高清不卡 | 99久久精品国产一区二区蜜芽| 国产精品va久久久久久久| 国产综合成人久久大片91| 久久AⅤ人妻少妇嫩草影院| 国产精品无码久久久久|