螢幕座標系:左上角為(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 ...