計算位置和範圍,百分比等
在很多圖形程式中都會見到位置和範圍的計算(參考計算機圖形學 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.交付物。那些已經完成或部分完成的...