Есть ли у кого-нибудь хороший алгоритм вычисления конечной точки ArcSegment
? Это не круговая дуга - это эллиптическая дуга.
Например, у меня есть эти начальные значения:
Я знаю, что место, где должна закончиться моя дуга, находится примерно в районе X = 0,92 и Y = 0,33 (с помощью другой программы), но я это необходимо сделать в ArcSegment
с указанием конечной точки. Мне просто нужно знать, как вычислить конечную точку, чтобы она выглядела так:
Кто-нибудь знает, как это правильно вычислить? (Я не думаю, что это имеет значение, что это WPF или любой другой язык, поскольку математика должна быть такой же.)
Вот изображение.
РЕДАКТИРОВАТЬ:
Я обнаружил, что есть подпрограмма под названием DrawArc
с перегрузкой в .NET GDI + , которая в значительной степени делает то, что мне нужно (подробнее о «в значительной степени» через секунду).
Чтобы упростить просмотр, возьмите следующий пример:
Public Sub MyDrawArc(e As PaintEventArgs)
Dim blackPen As New Pen(Color.Black, 2)
Dim x As Single = 0.0F
Dim y As Single = 0.0F
Dim width As Single = 100.0F
Dim height As Single = 200.0F
Dim startAngle As Single = 180.0F
Dim sweepAngle As Single = 135.0F
e.Graphics.DrawArc(blackPen, x, y, width, height, startAngle, sweepAngle)
Dim redPen As New Pen(Color.Red, 2)
e.Graphics.DrawLine(redPen, New Point(0, 55), New Point(95, 55))
End Sub
Private Sub ImageBox_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles ImageBox.Paint
MyDrawArc(e)
End Sub
Эта процедура прямо помещает конечную точку в X = 95, Y = 55
. Другие процедуры, упомянутые для круглых эллипсов, приведут к X = 85, Y = 29
. Если есть способ 1) Не нужно ничего рисовать и 2) e.Graphics.DrawArc
возвращает координаты конечной точки, вот что Мне понадобится.
Итак, теперь вопрос проясняется - кто-нибудь знает, как реализован e.Graphics.DrawArc
?