暂无描述
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

PolarHelper.cs 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using UnityEngine;
  2. namespace XCharts.Runtime
  3. {
  4. internal static class PolarHelper
  5. {
  6. public static void UpdatePolarCenter(PolarCoord polar, Vector3 chartPosition, float chartWidth, float chartHeight)
  7. {
  8. if (polar.center.Length < 2) return;
  9. var centerX = polar.center[0] <= 1 ? chartWidth * polar.center[0] : polar.center[0];
  10. var centerY = polar.center[1] <= 1 ? chartHeight * polar.center[1] : polar.center[1];
  11. var minWidth = Mathf.Min(chartWidth, chartHeight);
  12. polar.context.center = chartPosition + new Vector3(centerX, centerY);
  13. polar.context.insideRadius = polar.context.outsideRadius = 0;
  14. if (polar.radius.Length >= 2)
  15. {
  16. polar.context.insideRadius = ChartHelper.GetActualValue(polar.radius[0], minWidth, 1);
  17. polar.context.outsideRadius = ChartHelper.GetActualValue(polar.radius[1], minWidth, 1);
  18. }
  19. else if (polar.radius.Length >= 1)
  20. {
  21. polar.context.outsideRadius = ChartHelper.GetActualValue(polar.radius[0], minWidth, 1);
  22. }
  23. polar.context.radius = polar.context.outsideRadius - polar.context.insideRadius;
  24. }
  25. public static Vector3 UpdatePolarAngleAndPos(PolarCoord polar, AngleAxis angleAxis, RadiusAxis radiusAxis, SerieData serieData)
  26. {
  27. var value = serieData.GetData(0);
  28. var angle = angleAxis.GetValueAngle(serieData.GetData(1));
  29. var radius = polar.context.insideRadius + radiusAxis.GetValueLength(value, polar.context.radius);
  30. angle = (angle + 360) % 360;
  31. serieData.context.angle = angle;
  32. serieData.context.position = ChartHelper.GetPos(polar.context.center, radius, angle, true);
  33. return serieData.context.position;
  34. }
  35. }
  36. }