// 画面中央が(0, 0)の座標→左上が(0, 0)の座標 Vec2f AppEnv::windowPosition(const Vec2f& pos, const Vec2f& window, const Vec2f& viewport) { Vec2f screen_rate = window.array() / viewport.array(); return Vec2f(pos.array() / screen_rate.array()) + viewport / 2.0f; }
// 画面中央が(0, 0)の座標を計算 Vec2f AppEnv::screenPosition(const Vec2f& pos, const Vec2f& window, const Vec2f& viewport) { // ウインドウサイズと描画サイズの違いも考慮する Vec2f screen_rate(window.array() / viewport.array()); Vec2f view_pos(pos - viewport / 2.0f); return Vec2f(view_pos.array() * screen_rate.array()); }