Tanoda
unity-ui-extensions/Runtime/Scripts/Utilities/Circle.cs
Go to the documentation of this file.
1
4
5
7{
8 public class Circle
9 {
10 [SerializeField]
11 private float xAxis;
12
13 [SerializeField]
14 private float yAxis;
15
16 [SerializeField]
17 private int steps;
18
19 public float X
20 {
21 get { return xAxis; }
22 set { xAxis = value; }
23 }
24
25 public float Y
26 {
27 get { return yAxis; }
28 set { yAxis = value; }
29 }
30
31 public int Steps
32 {
33 get { return steps; }
34 set { steps = value; }
35 }
36
37 public Circle(float radius)
38 {
39 this.xAxis = radius;
40 this.yAxis = radius;
41 this.steps = 1;
42 }
43
44 public Circle(float radius, int steps)
45 {
46 this.xAxis = radius;
47 this.yAxis = radius;
48 this.steps = steps;
49 }
50
51 public Circle(float xAxis, float yAxis)
52 {
53 this.xAxis = xAxis;
54 this.yAxis = yAxis;
55 this.steps = 10;
56 }
57
58 public Circle(float xAxis, float yAxis, int steps)
59 {
60 this.xAxis = xAxis;
61 this.yAxis = yAxis;
62 this.steps = steps;
63 }
64
65 public Vector2 Evaluate(float t)
66 {
67 float increments = 360f / steps;
68 float angle = Mathf.Deg2Rad * increments * t;
69 float x = Mathf.Sin(angle) * xAxis;
70 float y = Mathf.Cos(angle) * yAxis;
71 return new Vector2(x, y);
72 }
73
74 public void Evaluate(float t, out Vector2 eval)
75 {
76 float increments = 360f / steps;
77 float angle = Mathf.Deg2Rad * increments * t;
78 eval.x = Mathf.Sin(angle) * xAxis;
79 eval.y = Mathf.Cos(angle) * yAxis;
80 }
81 }
82}
Credit Erdener Gonenc - @PixelEnvision.