計算位置和範圍

2021-06-05 10:05:17 字數 1875 閱讀 6902

計算位置和範圍,百分比等

在很多圖形程式中都會見到位置和範圍的計算(參考計算機圖形學 opengl 第三版,清華大學出版社)

舉個例子,要把sin(x)在(0-2pi)的曲線影象畫到乙個視窗中 (大小為winsize),座標為笛卡爾座標-xy (0,0)在視窗左下角

計算方式:

x = x;

y=sin(x);

x的範圍是:(0,2pi),y的範圍是(-1,1)

接著進行縮放到視窗中:

xpos = winsize.width * (x/2pi);

ypos = winsize.height * ((y+1) / 2) ;

很簡單的例子,但是說明了如何縮放到指定範圍的通用方式: (注意,當我講長度時是指最大值和最小值的長度 距離)

位置 = 視窗範圍長度最大值 * 百分比 + 平移  (其中百分比的計算方式是: (變數當前值 - 變數最小值)/(變數的範圍長度)

不要小看這個公式,在很多問題中都可以用到。

再看個例子,現在要求將 y=sin(x)的影象畫到 視窗 偏離螢幕左邊 1/3*winsize.width~winsize.width,

偏離視窗下邊 1/3*winsize.height ~ winsize.height的位置,那麼又該如何計算呢?

步驟多了一步,但是思想是一樣的,計算方式如下:(將這種情況轉化到上述的情況)

此時 x~(0,2*pi)

y~(-1,1)

要繪製的範圍: 1/3*winsize.width~winsize.width , 1/3*winsize.height ~ winsize.height

xpos = 2/3* winsize.width * (x/2pi) + 1/3 * winsize.width

ypos = 2/3*winsize.height*((y+1)/2)  + 1/3 * winsize.height;

ypos進行了一些調整,首先讓它侷限在 (2/3*winsize.height範圍內,然後偏移 1/3 *winsize.height的位置。

再看看下乙個例子吧,剛剛的x座標是從0開始的,到2pi,y的值域又恰好處於(-1,1)之間,應該比較容易理解。

現在x的範圍不再是0-2pi了,y的值域也不再是 (-1,1)了。

x的範圍是 (1/6pi,1/2pi), y的範圍是(0.5,1),要求畫到視窗 (1/3winsize.width~winsize.width),(1/3winsize.height ~ winsize.height)區域

這樣的話仍然按照前面的公式就是:

xpos = 2/3 * winsize.width * ((x - 1/6pi) / (1/2pi-1/6pi))  + 1/3 winsize.width;

ypos = 2/3 * winsize.height * ((y-0.5)/2) + 1/3 winsize.height

(公式還是能用的吧~)

沒有暈吧,呵呵;

接著,再舉個例子: 假設現在 視窗座標的原點不是左下角,而是螢幕中心點; x向右遞增,y向上遞增;

x的範圍是 (1/6pi,1/2pi), y的範圍是(0.5,1),要求畫到視窗 (-1/3winsize.width~winsize.width/2),(-1/3winsize.height ~ winsize.height/2.0)區域

那麼還是利用之前的公式:

xpos = (1/2+1/3) * winsize.width * ((x - 1/6pi) / (1/2pi-1/6pi))  - 1/3 winsize.width;

ypos = (1/2+1/3) * winsize.height * ((y-0.5)/2) - 1/3 winsize.height

這樣子,夠清楚了吧。

瓦片範圍計算(根據範圍和級別)(Scala)

package com.geoway.gspark.common import com.vividsolutions.jts.geom.import scala.collection.mutable.arraybuffer import com.vividsolutions.jts.io.wktre...

範圍管理和範圍蔓延

1 範圍管理的前提 前提是專案的定義。專案是企業哪個戰略方向下的產物,專案想完成哪些具體目標?只有定義明確了,才有範圍。範圍必須緊密圍繞著定義來開展。範圍不足或範圍蔓延都會對專案產生影響 1 範圍管理包括了兩部分 一部分是實體的產品,比如開發出來的一套軟體 另一部分是專案的商業方案 銷售方案 服務體...

範圍確認和範圍控制

範圍確認 範圍確認是專案干係人正式接受已完成的專案範圍的過程。範圍確認需要審查可交付物和工作成果,貫穿於整個專案。輸入工具與技術 輸出1.範圍說明書 2.wbs字典 3.範圍管理計畫 4.交付物 1.檢查 1.已接受的交付物 2.變更申請 3.推薦的糾正措施 輸入4.交付物。那些已經完成或部分完成的...