using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; namespace AIStudio.Wpf.DiagramDesigner { public static class DrawingHelper { public static List GetPoints(Point startPoint, double angle, List> angleAndWidth) { List points = new List(); points.Add(startPoint); Point thisPoint= startPoint; double thisAngle = angle; Point nextPoint; foreach (var item in angleAndWidth) { nextPoint = GetEndPointByTrigonometric(thisPoint, thisAngle, item.Item1); //if (thisPoint != nextPoint) { points.Add(nextPoint); } thisPoint = nextPoint; thisAngle = thisAngle + item.Item2; } return points; } /// /// 通过三角函数求终点坐标 /// /// 角度 /// 起点 /// 距离 /// 终点坐标 public static Point GetEndPointByTrigonometric(Point startPoint, double angle, double distance) { //角度转弧度 var radian = (angle * Math.PI) / 180; //计算新坐标 r 就是两者的距离 Point endPoint = new Point(startPoint.X + distance * Math.Cos(radian), startPoint.Y + distance * Math.Sin(radian)); return endPoint; } } }