30 return Matrix4x4.identity;
38 this.overrideMatrix =
null;
47 var circlePoint = Swizzle.Swizzle.xy(unitCubePoint).Square2Circle();
48 var circlePointMag = circlePoint.magnitude;
50 var zFrac = unitCubePoint.z.Map(-1f, 1f, 0f, 1f);
53 var rot = Quaternion.identity;
55 if (circlePointMag > 0f) {
56 var circleDir = circlePoint / circlePointMag;
57 circleAngle = Vector3.up.SignedAngle(circleDir, -Vector3.forward);
59 rot = Quaternion.AngleAxis(circleAngle, -Vector3.forward) * rot;
61 var coneAngle = circlePointMag.Map(0f, 1f, 0f,
angle / 2f);
62 rot = Quaternion.AngleAxis(coneAngle, rot.GetRight()) * rot;
64 return matrix.MultiplyPoint3x4(rot * rForward);
72 section.overrideMatrix = useMatrix;
75 var useColor = drawer.
color = color ??
Color.white;
76 var alpha = useColor.a;
77 unitBox.DrawLines(divisions: 16, drawLineFunc: (a, b) => {
78 var a2 = section.SampleFromUnitCube(a);
79 var b2 = section.SampleFromUnitCube(b);
83 var rect =
new Rect(center: Vector3.forward, radii: Vector3.one);
85 for (var r = 0.8f; r > 0f; r -= 0.15f) {
86 drawer.
color = useColor.WithAlpha(r * r * alpha);
87 rect.radii = Vector3.one * r;
88 rect.DrawLines(divisions: 16, drawLineFunc: (a, b) => {
89 var a2 = section.SampleFromUnitCube(a);
90 var b2 = section.SampleFromUnitCube(b);
93 for (var n0 = -1; n0 <= 1; n0 += 1) {
94 for (var n1 = -1; n1 <= 1; n1 += 1) {
95 var s =
new Vector3(n0 * prevR, n1 * prevR, 1f);
96 var t =
new Vector3(n0 * r, n1 * r, 1f);
97 drawer.
Line(section.SampleFromUnitCube(s),
98 section.SampleFromUnitCube(t));
Simple drawing interface abstraction (intended for debug drawing, not production!) with statically-ac...
void Line(Vector3 a, Vector3 b)
Color color
Calls the setColor delegate.
void Draw(Drawer drawer, Color? color=null, Matrix4x4? overrideMatrix=null)
Matrix4x4? overrideMatrix
Vector3 SampleFromUnitCube(Vector3 unitCubePoint)
Converts a sample point from the unit cube (XYZ [-1, 1]) to a sample point in the spherical section....
SphericalSection(float angle, float radius, float minRadius=0, Transform transform=null)