void FreeCameraController::set_frame(const D3DXMATRIX& value) { camera_position_ = D3DXVECTOR4(value.m[3][0], value.m[3][1], value.m[3][2], 1); { D3DXVECTOR4 view_direction = D3DXVECTOR4(value.m[0][0], value.m[0][1], value.m[0][2], 0); view_direction.y = 0.0f; D3DXVec4Normalize(&view_direction, &view_direction); yaw_ = acos(D3DXVec4Dot(&view_direction, &default_forward_)); } { D3DXVECTOR4 view_direction = D3DXVECTOR4(value.m[0][0], value.m[0][1], value.m[0][2], 0); D3DXVECTOR4 temp = view_direction; view_direction.y = 0.0f; D3DXVec4Normalize(&view_direction, &view_direction); D3DXVec4Normalize(&temp, &temp); pitch_ = acos(D3DXVec4Dot(&temp, &view_direction)); } recompute_rotation(); }
float float4::Dot(const float4& rvalue) { return D3DXVec4Dot(this,&rvalue); }
//@} //----------------------------------------------------------------------------- /// @name 幾何ベクトルの演算 //@{ /// @copydoc psyq::geometry::vector::dot inline psyq::geometry::vector::traits<D3DXVECTOR4>::element dot( D3DXVECTOR4 const& in_left, D3DXVECTOR4 const& in_right) { return D3DXVec4Dot(&in_left, &in_right); }