1
1

RadarChart.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using System;
  2. using System.Collections.Generic;
  3. namespace Masuit.Tools.Maths;
  4. public class RadarChart
  5. {
  6. /// <summary>
  7. /// 向量长度集合
  8. /// </summary>
  9. public List<double> Data { get; }
  10. /// <summary>
  11. /// 起始弧度
  12. /// </summary>
  13. public double StartAngle { get; } // 弧度
  14. /// <summary>
  15. /// 多边形
  16. /// </summary>
  17. /// <param name="data">向量长度集合</param>
  18. /// <param name="startAngle">起始弧度</param>
  19. public RadarChart(List<double> data, double startAngle = 0)
  20. {
  21. Data = data;
  22. StartAngle = startAngle;
  23. }
  24. /// <summary>
  25. /// 获取每个点的坐标
  26. /// </summary>
  27. /// <returns></returns>
  28. public List<Point2D> GetPoints()
  29. {
  30. int count = Data.Count;
  31. List<Point2D> result = [];
  32. for (int i = 0; i < count; i++)
  33. {
  34. double length = Data[i];
  35. double angle = StartAngle + Math.PI * 2 / count * i;
  36. double x = length * Math.Cos(angle);
  37. double y = length * Math.Sin(angle);
  38. result.Add(new Point2D(x, y));
  39. }
  40. return result;
  41. }
  42. }