提示コードですが画面上がスクリーン座標での100,100の位置です。提示画像の左下が100,100の位置に描画したいのですがどうやってもうまく座標変換できません。数式がわからないのですがこういった場合どういう計算なのでしょうか?
cpp
1 //矩形描画 2 void DrawRectangle(glm::vec2 pos, glm::vec2 size, glm::vec4 color) 3 { 4 float x = 1.0f / FrameWork::getWindowContext()->getSize().x; 5 float y = 1.0f / FrameWork::getWindowContext()->getSize().y; 6 float c = 1.0f / 255.0f; 7 glColor4f(color.x * c, color.y * c, color.z * c, color.w * c); 8 9//////////////////////////////////////////////////////////////////////////////// 10 glm::vec2 posA; 11 glm::vec2 posB; 12 posA.x = ((pos.x * x) - 0.5f) - 0.5f; 13 posA.y = ((pos.y * y) - 0.5f); 14 15 posB.x = ((pos.x + size.x) * x - 0.5f) - 0.5f; 16 posB.y = ((pos.y + size.y)* y - 0.5f); 17///////////////////////////////////////////////////////////////////////////////// 18 19 20 glRectf(posA.x, posA.y, posB.x, posB.y); 21 22 glFlush(); 23 } 24 25 26 27 28
タイトルに書かれている「画面の真ん中が0,0の座標系」においては,画面の左上の座標はいくつになるのか? →仮に(A,B)だとしよう.
他方,「画面の左上が0,0の座標系」においては,そこは当然ながら(0,0)なわけですよね.
であれば,
前者の(A,B) と,後者の(0,0) が対応するような式になっているのか? を確認してみればよいのでは.
(同様に,右上とか中心とかでも確認してみればいい)
そもそもこの行為は正しいのでしょうか?
なんか毎度「正しいか?」って言いだすけど,そんなの誰にもわからないよ.
あなたのプログラムの中でそれが必要な行為なのであれば,やるしかないのだし.
そこのところを 知っている/判断できる のはあなただけだ.
回答2件
あなたの回答
tips
プレビュー