Add a `translate` method to 3D transforms
This commit is contained in:
parent
bcac119324
commit
3f91206d57
|
@ -155,13 +155,10 @@ impl CameraTransform3D {
|
|||
pub fn to_transform(&self) -> Transform4F {
|
||||
let mut transform = Transform4F::from_rotation(self.yaw, self.pitch, 0.0);
|
||||
transform *= Transform4F::from_uniform_scale(2.0 * self.scale);
|
||||
transform *=
|
||||
Transform4F::from_translation(self.position * Vector4F::new(-1.0, -1.0, -1.0, 1.0));
|
||||
|
||||
// Flip Y.
|
||||
transform *= Transform4F::from_scale(Vector4F::new(1.0, -1.0, 1.0, 1.0));
|
||||
|
||||
transform
|
||||
// Flip Y, and translate.
|
||||
let offset = self.position * Vector4F::new(-1.0, -1.0, -1.0, 1.0);
|
||||
transform * Transform4F::from_scale(Vector4F::new(1.0, -1.0, 1.0, 1.0)).translate(offset)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -220,6 +220,11 @@ impl Transform4F {
|
|||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn translate(&self, translation: Vector4F) -> Transform4F {
|
||||
Transform4F::from_translation(translation) * *self
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn transform_point(&self, point: Vector4F) -> Vector4F {
|
||||
let term0 = self.c0 * F32x4::splat(point.x());
|
||||
|
|
|
@ -471,11 +471,8 @@ where
|
|||
fn tile_transform(&self) -> Transform4F {
|
||||
let draw_viewport = self.draw_viewport().size().to_f32();
|
||||
let scale = F32x2::new(2.0 / draw_viewport.x(), -2.0 / draw_viewport.y());
|
||||
let transform = Transform4F::from_scale(Vector4F::new(2.0 / draw_viewport.x(),
|
||||
-2.0 / draw_viewport.y(),
|
||||
1.0,
|
||||
1.0));
|
||||
Transform4F::from_translation(Vector4F::new(-1.0, 1.0, 0.0, 1.0)) * transform
|
||||
let scale = Vector4F::new(2.0 / draw_viewport.x(), -2.0 / draw_viewport.y(), 1.0, 1.0);
|
||||
Transform4F::from_scale(scale).translate(Vector4F::new(-1.0, 1.0, 0.0, 1.0))
|
||||
}
|
||||
|
||||
fn draw_alpha_tiles(&mut self, count: u32) {
|
||||
|
|
Loading…
Reference in New Issue