說的話:這幾天做了乙個工具,是要接受串列埠傳來的座標(x,y),接著在電腦上列印出對應的點,同時包含系列畫板操作(滾條滾動,畫板縮放,重設原點,軌跡快取)。原本以為已經得到了位置資訊,在畫板上列印會很簡單,畢竟打點函式是現成的,結果完全不是這麼回事。
比如:畫板座標和傳上來的座標其實是兩個座標系,不可同日而語。
打點是打出來了,但縮放定位操作又很彆扭。。。
經過一系列的整理,思路才逐漸清晰,這篇部落格主要講訴下關於兩個座標系的對應,以及實現原理,對照著**看效果更佳哦!
在講這個之前,先來說明一下為什麼要專門提到,這很重要,首先在畫板上打點,始終是在畫板座標上打點,打點區域表示畫板的區域,x和y的區間是[0-panel.size],均為正值,且大小固定,當我們要畫的點在畫板外時,很多人都能想到可以利用滾條的值來實現。
為此,畫板和真實左邊之間必定有乙個對映關係,如下圖:
因此假設實際座標系(x,y)的區間為 x.min不妨可以從上圖中看出,此時橫豎滾條的值即為畫板中心所代表的真實座標的x,y,因此需要定位座標時僅需要修改滾條的值並重新整理畫板即可完成對應點的定位
對於放大與縮小,要明確畫板的座標系是不會變的,變得只是畫板與真實座標之間的對應關係,因此給出變化後的公式如下:
panel.x=(x+scrollbar1.value)*n+panel1.size.x/2
panel.y= (y+scrollbar2.value)*n+panel1.size.y/2
在這裡注意放大後由於對應關係的轉變,滾條的最值也應該相應變化,因此在定位時又要考慮滾條變化後對值的影響(我是直接在位時,自動將倍數設為1,所以省去了一步)
ps:**包括位置點的儲存讀取,串列埠資料接受,原點的重新設定等等操作,不過畫板的核心在於雙座標系以及中心點的定位。
c 座標系互相轉換
各種座標系的各種轉換 public class tempgps public class gps wgs 84 to gcj 02 public void gcj encrypt var t this.delta new tempgps glng t.tlng lng glat t.tlat lat...
子座標系C在父座標系W中的旋轉問題
用途 相機位姿估計 無人機位姿估計 c 函式展示 author vshawn singlex foxmail.com date 2016 11 04 lab cvlab202 csu 好了,現在問題越來越複雜了,這次的問題涉及兩個座標系 世界座標系w與相機座標系c。做過相機標定或者研究過相機模型的人...
C巨集高階應用之
在巨集定義中經常看到 和 現在講一下他們的用法 1,是連線符 用於將兩個引數連線在一起 例如 define a x,y x y 則 a he llo 結果是hello define link a my a 則 link god 相當於 mygod 是一種分隔連線方式 他的作用是先分隔 然後強制連線 ...