Example80_Polar.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using UnityEngine;
  2. using XCharts.Runtime;
  3. #if INPUT_SYSTEM_ENABLED
  4. using Input = XCharts.Runtime.InputHelper;
  5. #endif
  6. namespace XCharts.Example
  7. {
  8. [DisallowMultipleComponent]
  9. [ExecuteInEditMode]
  10. public class Example80_Polar : MonoBehaviour
  11. {
  12. private BaseChart chart;
  13. private float updateTime;
  14. void Awake()
  15. {
  16. chart = gameObject.GetComponent<BaseChart>();
  17. if (chart == null)
  18. {
  19. chart = gameObject.AddComponent<BaseChart>();
  20. chart.Init();
  21. }
  22. chart.EnsureChartComponent<PolarCoord>();
  23. }
  24. void Update()
  25. {
  26. if (Input.GetKeyDown(KeyCode.Space))
  27. {
  28. AddData();
  29. }
  30. }
  31. void AddData()
  32. {
  33. chart.RemoveData();
  34. chart.GetChartComponent<Tooltip>().type = Tooltip.Type.Corss;
  35. var angleAxis = chart.GetChartComponent<AngleAxis>();
  36. angleAxis.type = Axis.AxisType.Value;
  37. angleAxis.minMaxType = Axis.AxisMinMaxType.Custom;
  38. angleAxis.min = 0;
  39. angleAxis.max = 360;
  40. angleAxis.startAngle = Random.Range(0, 90);
  41. chart.AddSerie<Line>("line1");
  42. var rate = Random.Range(1, 4);
  43. for (int i = 0; i <= 360; i++)
  44. {
  45. var t = i / 180f * Mathf.PI;
  46. var r = Mathf.Sin(2 * t) * Mathf.Cos(2 * t) * rate;
  47. chart.AddData(0, Mathf.Abs(r), i);
  48. }
  49. }
  50. }
  51. }