關於座標系統的理解
為什麼使用這兩個概念?
為了讓在邏輯座標下自己作的圖,在視窗大小變換時能自動適應,而不用去管窗體目前(物理上)是多大的。
概念區別
我們先要明白視口和視窗,物理座標和邏輯座標的概念,所謂視口與其物理座標 ,就是指在螢幕上的看到的實際的一個個畫素和其座標,而所謂視窗和邏輯座標,就是指我們指定了一個這個窗體的座標系,在這個座標系內做的東西是先在其內畫好,在轉換到物理座標系內去。本來物理座標和邏輯座標顯然是一樣的,除非你呼叫了setWindow方法去設定了邏輯座標。
相關描述
在QPainter中存在setWindow和setViewPort,分別用來設定繪圖視窗和繪圖的視口。
首先要說明的是,這個視窗和視口和可能和其它地方說明的視窗和視口含義不一樣,把相關知識描述如下:
以在QWidget中繪圖為例,QWidget大小(600,600)。Qt繪圖時,如果不顯式的指定視窗和視口,預設的視窗和視口都是(0,0,widget.width(),widget.height())。那麼視窗-視口變換過程中的線性關係是X’ = X;Y’ = Y;其中(X,Y)是視窗中的座標,(X’,Y’)是視口中的座標。那麼此時繪製的圖形是以一個不變的關係繪製在QWidget上,沒有任何的平移等效果。
如果使用setWindow(-300,-300,600,600)和setViewPort(-100,-100,600,600)之後呢,那麼這個視窗-視口的線性關係則需要重新計算了,怎麼計算?
設X’=aX+b;Y’=cY+d; 那麼需要確定引數a,b,c,d。如何確定?
使用視窗座標和視口座標進行計算,在視窗(-300,-300,600,600)中,實際上是指定了視窗的兩個座標,左上角(-300,-300),右下角(300,300);在視口(-100,-100,600,600)中,指定了視口左上角座標(-100,-100),視口右下角(500,500).根據左上角對應左上角,右下角對應右下角的關係,得到:x方向上有:-100=-300a+b,500=300a+b,解得a=1,b=200;y方向有:-100=-300c+d,500=300c+d,解得c=1,d=200。得到關係後再來繪圖則是經過該關係變換後的值了。
比如painter.drawPoint(0,10),對應x=0,得到x’=0*a+b=200;對應y=10,得到y’=10*c+d=210;即實際上是在widget的(200,210)處繪製了一個點。
以上即是QPainter視窗-視口機制的具體計算過程。
本文來自轉載.
相關推薦
關於座標系統的理解
為什麼使用這兩個概念? 為了讓在邏輯座標下自己作的圖,在視窗大小變換時能自動適應,而不用去管窗體目前(物理上)是多大的。 概念區別 我們先要明白視口和視窗,物理座標和邏輯座標的概念,所謂視口與其物理座標 ,就是指在螢幕上的看到的實際的一個個畫素和其
使用AxisHelper幫助理解View and Data API中的座標系統
大家使用View and Data API做三維模型開發,必然首先要理解View and Data API的座標系統,即XYZ三個軸向分別是怎麼定義的。Three.js裡面提供了一個AxisHelper,但如果你直接運用的話,你會發現在viewer中並不顯示,並且控制檯中會有這樣的錯誤資訊:"Only THR
理解Cocos2d-x座標系統
座標系Coordinator 這個概念非常普遍,而且非常的常用,使用過二維繪圖、三維繪圖的應該都不陌生。 笛卡爾座標系:這個接觸過OpenGL的都不陌生,以左下角為原點,x向右,y向上,z向外,符合右手定則。Cocos2d使用的就是此座標系,原點為左下角,x向右,y向上。
通過C語言HelloWord程序對計算系統理解
lin 數據並行 stdio.h 設備 相對 () 根據 malloc 並行 HelloWord程序C語言代碼 #include<stdio.h> void main(){ printf("HelloWord\n"); } 要了解一個helleword程序的
分布式系統理解
簡單 發布 知識 概念 bit mes 拼接 中間件 事務 2018/02/01 發布 分布式系統以其紛繁復雜的概念,涉及到諸多技術、理論與協議,形成一個龐大的知識體系,困擾著各位初學者。如何窺斑見豹,從這些繁雜的信息中整理出脈絡,是理解和學習分布式系統思想的關鍵。 在
transform與座標系統
預設元素transform 的旋轉、縮放、平移、斜切的座標系統的原點為該元素的幾何中心。 transform-origin 屬性 transform-origin 屬性允許更改轉換元素的位置,即原點。 語法 transform-origin: x-axis y-axis z-axis
齊次座標的理解(轉)
齊次座標表示是計算機圖形學的重要手段之一,它既能夠用來明確區分向量和點,同時也更易用於進行仿射(線性)幾何變換。 對於一個向量v以及基oabc,可以找到一組座標(v1,v2,v3),使得v = v1 a + v2 b + v3 c (1) 而對於一個點p,則可以找到一組座標
unity3d中使用不同方法獲得position對應的座標系統
inspector面板 通過inspector面板上獲得的transform屬性均屬於本地座標系。 注意:inspector面板上的rotation是尤拉角。 使用程式碼得到 使用transform.position系列方法得到的座標屬於世界座標系。 注意:transform
【計算機圖形學】計算機圖形學中的座標系統
一、簡介 馬三最近開始學習計算機圖形學了,買了兩本書,其中一本是國內的,還是什麼大學的教材,不過寫得真不咋樣啊。另外一本是大名鼎鼎的《計算機圖形學》第四版。最近接觸了下計算機圖形學中的座標系統,做個筆記。 二、計算機圖形學中的座標系統 1.建模座標系(MC) 建模座標系是一個區域性座標系,同時
Cocos Creator 系統學習筆記(四)--座標系統
座標系統: cc.Class({ extends: cc.Component, properties: { }, //座標系統 //cc.Vec2是一個建構函式,可以使用new來建立 /* * 1: cc.Vec2
GIS | 座標系統與地圖投影
關於座標系統,首先要了解一些基本的概念,比如,大地基準,包括天球,天極,黃道等等。 這裡簡單介紹一下地球橢球的概念,地球是一個不規則的球體,所以如果完全按照地球原來的形狀去求解關於地球的問題是相當複雜的,由於地球的形狀類似於一個橢球體,所以我們選擇利用一個橢球體來代替地球以便於我們對問題的求解。
分散式系統理解之CAP理論的發展
最近一段時間在研究Zookeeper,深入瞭解了下分散式系統的發展以及CAP理論的發展,因此寫下這篇文章總結一下,由於博主水平有限,如有不足之處可以留言討論,本文查閱了很多資料,如有侵權請聯絡博主刪除。 傳統IT系統的要求 效能 在效能上要求快速響應,支援更
座標系統
一、座標系統: 座標系統是描述物質存在的空間位置(座標)的參照系,通過定義特定基準及其引數形式來實現。座標是描述位置的一組數值。按座標的維度分為一維座標(公路里程碑)和二維(笛卡爾平面直角座標。高斯平面直角座標)、三維座標(大地座標、空間直角座標)。為了描述或確定位置,必須建立座標系統,座標只有存在於某個座
Learn OpenGL (六):座標系統
為了將座標從一個座標系變換到另一個座標系,我們需要用到幾個變換矩陣,最重要的幾個分別是模型(Model)、觀察(View)、投影(Projection)三個矩陣。我們的頂點座標起始於區域性空間(Local Space),在這裡它稱為區域性座標(Local Coordinate),它在之後會變為世界座
齊次座標的理解
一直對齊次座標這個概念的理解不夠徹底,只見大部分的書中說道“齊次座標在仿射變換中非常的方便”,然後就沒有了後文,今天在一個叫做“三百年 重生”的部落格上看到一篇關於透視投影變換的探討的文章,其中有對齊次座標有非常精闢的說明,特別是針對這樣一句話進行了有力的證
ArcMap 修改地圖座標系統
前言 在水經注下載的電子地圖和向量地圖的座標系是不一樣的,這導致我們在web端開發是不僅僅是影象偏移的問題,連最起碼的定位功能也會提示異常。 修改圖層座標系 一、 右擊圖層(資料框圖層)
opengl學習之路六,座標系統
QQ:609162385 下載連結:https://download.csdn.net/download/cqltbe131421/10703034 在上一個教程中,我們學習瞭如何有效地利用矩陣的變換來對所有頂點進行變換。OpenGL希望在每次頂點著色器執行後
LearnOpenGL學習筆記(六):座標系統
LearnOpenGL學習筆記(六) 1.概述 在OpenGL中,對我們來說比較重要的總共有5個不同的座標系統: 區域性空間(Local Space,或者稱為物體空間(Object Space)) 世界空間(World Space) 觀察空間(View Sp
win32座標系統的轉換
First,code… //my_header.h #ifndef __MY_HEADER_ #define __MY_HEADER_ #include<windows.h> #include<strsafe.h> #includ
網路地圖的地理座標系統
一、當前網際網路地圖的地理座標系統現狀 在國內,為了資料保密的原因,國家測繪地理資訊局規定,凡是公開對外提供服務的線上地圖都必須使用保密外掛做一次非線性座標轉換,將原始WGS84座標系的資料轉換為GCJ02座標系(俗稱火星座標系),而百度在火星座標系