OGRE的2D座標 CEGUI座標 滑鼠座標

2021-04-22 17:45:10 字數 1068 閱讀 3316

螢幕座標系:左上角為(0, 0)右下角為(1, 1)

ogre的2d座標系:左上角為(-1, 1)右下角為(1, -1)

cegui座標系:左上角為(0, 0),單位畫素

轉換公式(滑鼠座標=>ogre的2d座標)

void setcorners(float left, float top, float right, float bottom)

left = left * 2 - 1;

right = right * 2 - 1;

top = 1 - top * 2;

bottom = 1 - bottom * 2;

}對於根據滑鼠位置來產生射線:

bool mousepressed(const ois::mouseevent &arg, ois::mousebuttonid id)

cegui::point mousepos = cegui::mousecursor::getsingleton().getposition();

ray mouseray = mcamera->getcameratoviewportray(mousepos.d_x/float(arg.state.width), mousepos.d_y/float(arg.state.height));

...}

其中函式

ray getcameratoviewportray(real x, real y) const;

// x and y are in 「normalized」 (0.0 to 1.0) screen coordinates

其中兩個引數是對螢幕座標系來說的,

所以x = mousepos.d_x / float(arg.state.width)

y = mousepos.d_y / float(arg.state.height)

arg.state.width是渲染視窗的寬單位為畫素

arg.state.height是渲染視窗的高單位為畫素

mousepos.d_x是滑鼠所在位置到渲染視窗左邊界的距離單位為畫素

mousepos.d_y是滑鼠所在位置到渲染視窗上邊界的距離單位為畫素

2d的公式 繪製二體2D執行軌跡

本來想要繪製三體的3d軌跡,但是一開始難度有點大,先從最簡單的開始,二體類似地月系統 首先來定義乙個繪製函式 因為是乙個執行軌跡,所以時間就是必要因素 解決整體漂移問題 萬有引力計算函式 萬有引力公式為前半部分,後半部分其實是乙個單位向量,所以,計算結果為向量,這裡的萬有引力常數並不是真實的數值,這...

元素的2D變換

雖然2d3d變形用的不是很多,但今天既然學到了還是要記一下,筆記流部落格,不喜勿噴 transform 變形樣式 rotate表示旋轉變形,正值順時針,單位為deg transform origin,設定變形原點,預設為50 50 translate 平移變形,兩個引數分別是橫向偏移量和縱向偏移量 ...

js 繪製2D機櫃(一)2D機櫃的基本繪製

今天被領導要求用js繪製2d機櫃用於向客戶展示客戶資產以及管理裝置,雖然我是後端,既然被分配到這個任務那就得做好。繪製的第一步當然是繪製機櫃框框,這個很簡單,寫個div然後將邊框設定下就好了 parentblock 這裡將背景設定成灰色顯得真實些 為了辨別機櫃,這裡在機櫃上面再加乙個機櫃title ...