AngleSharp by Florian Rappl

<PackageReference Include="AngleSharp" Version="0.9.0" />

 RotateTransform

sealed class RotateTransform : ITransform
Represents the rotate3d transformation.
using System; namespace AngleSharp.Css.Values { internal sealed class RotateTransform : ITransform { private readonly float _x; private readonly float _y; private readonly float _z; private readonly float _angle; public float X => _x; public float Y => _y; public float Z => _z; public float Angle => _angle; internal RotateTransform(float x, float y, float z, float angle) { _x = x; _y = y; _z = z; _angle = angle; } public static RotateTransform RotateX(float angle) { return new RotateTransform(1, 0, 0, angle); } public static RotateTransform RotateY(float angle) { return new RotateTransform(0, 1, 0, angle); } public static RotateTransform RotateZ(float angle) { return new RotateTransform(0, 0, 1, angle); } public TransformMatrix ComputeMatrix() { float num = 1 / (float)Math.Sqrt((double)(_x * _x + _y * _y + _z * _z)); float num2 = (float)Math.Sin((double)_angle); float num3 = (float)Math.Cos((double)_angle); float num4 = _x * num; float num5 = _y * num; float num6 = _z * num; float num7 = 1 - num3; return new TransformMatrix(num4 * num4 * num7 + num3, num5 * num4 * num7 - num6 * num2, num6 * num4 * num7 + num5 * num2, num4 * num5 * num7 + num6 * num2, num5 * num5 * num7 + num3, num6 * num5 * num7 - num4 * num2, num4 * num6 * num7 - num5 * num2, num5 * num6 * num7 + num4 * num2, num6 * num6 * num7 + num3, 0, 0, 0, 0, 0, 0); } } }