# YawPitchRollTransform

## Description

`sealed` `class` `Tinman.Engine.Scenes.Util.YawPitchRollTransform`

Derived from

A ITerrainTransform that rotates model-space around the given yaw, pitch and roll angles, in order to transform to a local coordinate system (see LocalTransform).

The rotations (around the point defined by ICenterLocalProperty.Center) are performed in the following order, to transform from model-space to the local coordinate system:

1. Translation by negated ICenterLocalProperty.Center, so that the center of rotation becomes the coordinate origin.

2. Clockwise rotation in direction of positive Z-axis with Roll angle.
In terms of an aircraft, positive roll angles lift the left wing and lower the right wing.

3. Clockwise rotation in direction of negative ( CartesianHandedness.RightHanded) resp. positive ( CartesianHandedness.LeftHanded) X-axis with Pitch angle.
In terms of an aircraft, positive pitch angles raise the nose and lower the tail.

4. Clockwise rotation in direction of negative Y-axis with Yaw angle.
In terms of an aircraft, positive yaw angles move the nose to the right and the tail to the left.

5. Translation by ICenterLocalProperty.Center, to restore the original center of rotation.

This corresponds to these descriptions:
https://en.wikipedia.org/wiki/Aircraft_principal_axes

The following static method may be used to general-purpose computations regarding yaw, pitch and roll angles:

## Public / Constructors

### Yaw​Pitch​Roll​Transform

`public` `constructor` `YawPitchRollTransform` → `()`

Creates a new instance of YawPitchRollTransform.

## Public / Methods

### Matrix

`[Pure]`
`public` `static` `method` `Matrix1` → `(2)`

yawPitchRoll in : Vec3D

The rotation angles:
Vec3D.X: Yaw
Vec3D.Y: Pitch
Vec3D.Z: Roll

rightHanded opt : bool = true

Assume a right-handed coordinate system?

returns → Mat3D

The resulting rotation matrix.

Computes the combined rotation matrix for the given angles.

`[Pure]`
`public` `static` `method` `Matrix2` → `(4)`

yaw in : float64

The Yaw angle.

pitch in : float64

The Pitch angle.

roll in : float64

The Roll angle.

rightHanded opt : bool = true

Assume a right-handed coordinate system?

returns → Mat3D

The resulting rotation matrix.

Computes the combined rotation matrix for the given angles.

### Normal

`[Pure]`
`public` `static` `method` `Normal` → `(3)`

in : Vec3D

First point in the local coordinate system.

in : Vec3D

Second point in the local coordinate system.

in : Vec3D

Third point in the local coordinate system.

returns → Vec3D

The normal vector in the local coordinate system. The vector will not be of unit-length.

Computes a normal vector in the local coordinate system.

LocalTransform

### Pitch​Angle

`[Pure]`
`public` `static` `method` `PitchAngle` → `(1)`

normal in : Vec3D

The normal vector, in the local coordinate system.

returns → float64

The pitch angle, in degrees.

Computes the Pitch angle for the given normal vector.

### Pitch​Matrix

`[Pure]`
`public` `static` `method` `PitchMatrix` → `(2)`

pitch in : float64

The Pitch angle.

rightHanded opt : bool = true

Assume a right-handed coordinate system?

returns → Mat3D

The resulting rotation matrix.

Computes the rotation matrix for the given pitch in angle.

### Roll​Angle

`[Pure]`
`public` `static` `method` `RollAngle` → `(1)`

normal in : Vec3D

The normal vector, in the local coordinate system.

returns → float64

The roll angle, in degrees.

Computes the Roll angle for the given normal vector.

### Roll​Matrix

`[Pure]`
`public` `static` `method` `RollMatrix` → `(1)`

roll in : float64

The Roll angle.

returns → Mat3D

The resulting rotation matrix.

Computes the rotation matrix for the given roll in angle.

### Yaw​Matrix

`[Pure]`
`public` `static` `method` `YawMatrix` → `(1)`

yaw in : float64

The Yaw angle.

returns → Mat3D

The resulting rotation matrix.

Computes the rotation matrix for the given yaw in angle.

## Public / Attributes

### Angles

`public` `attribute` `Angles` → `(get,set)`

value : Vec3D

The angles:
Vec3D.X : Yaw
Vec3D.Y : Pitch
Vec3D.Z : Roll

The yaw, pitch and roll angles.

### Pitch

`public` `attribute` `Pitch` → `(get,set)`

value : float64

The pitch angle, in the range [-180..180[ degrees.

The pitch angle.

### Roll

`public` `attribute` `Roll` → `(get,set)`

value : float64

The roll angle, in the range [-180..180[ degrees.

The roll angle.

### Yaw

`public` `attribute` `Yaw` → `(get,set)`

value : float64

The yaw angle, in the range [-180..180[ degrees.

The yaw angle.