Helix 3D 툴킷을 사용하여 사용자 정의 호를 작성하려고합니다. 사용자가 원호 (시작, 중간, 끝)에서 3 점을 선택하면 프로그램은 원의 중심을 찾고 원호를 처음부터 끝까지 그립니다. 문제는 내가 수학에 능숙하지 않아이 작품을 만드는 데 문제가 있습니다. 내 주요 문제는 시작 각도와 끝 각도를 얻는 것이고 모든 크기의 호를 정확하게 그려야한다는 것입니다. 어떤 도움을 주셔서 감사합니다.시작, 중간 및 끝 점이 지정된 3D 아크 그리기
private void Draw_Arc(object sender, MouseButtonEventArgs e)
{
linept = new List<Point3D>();
linept.Add(startPoint);
linept.Add(endPoint);
linept.Add((Point3D)GetPoints(e));
LinesVisual3D line = new LinesVisual3D();
line.Thickness = 2;
line.Color = Colors.Blue;
line.Points = linept;
port.Children.Add(line);
double startAngle, sweepAngle;
Point3D center = GetCenterOfArc(linept.ElementAt(0), linept.ElementAt(1), linept.ElementAt(2));
GetAngles(linept.ElementAt(0), linept.ElementAt(1), linept.ElementAt(2), out startAngle, out sweepAngle);
circle = new PieSliceVisual3D();
double RadiusX = Math.Abs(startPoint.X - center.X);
double RadiusY = Math.Abs(startPoint.Y - center.Y);
circle.Center = center;
if (RadiusX >= RadiusY)
circle.OuterRadius = RadiusX;
else
circle.OuterRadius = RadiusY;
circle.InnerRadius = circle.OuterRadius + 3;
circle.StartAngle = (180/Math.PI * Math.Atan2(startPoint.Y - circle.Center.Y, startPoint.X - circle.Center.X));
circle.EndAngle = (180/Math.PI * Math.Atan2(linept.ElementAt(2).Y - circle.Center.Y, linept.ElementAt(2).X - circle.Center.X));
port.Children.Add(circle);
}
나는 이미 원의 중심을 얻을 수 있었지만 각도를 계산하는 것은 내가 잘못되었다는 것이었다. 하지만 지금은 효과가 있습니다. 고마워요! –