Описание тега geometric-arc

Геометрическая фигура, представляющая сегмент круга. Обычно измеряется двумя углами, начальным и конечным, и радиусом. Если вам нужна дуга эллипса, не забудьте также пометить вопрос [tag:ellipse].

Геометрическое определение:

Дуга - это геометрическая фигура, используемая для рисования сегментов круга. Он состоит из трех основных частей:

  • при взгляде θ: угловая мера для первой части подкруга, обычно в радианах
  • окончание θ: угловая мера для конечной части подкруга, обычно в радианах
  • radius:     радиус круга, частью которого является эта дуга.

Дуги в компьютерном программировании невозможно точно представить, поскольку значение π бесконечно. Таким образом, любой круг или дуга, которые вы видите, всегда будут немного неточными, хотя большинство алгоритмов обычно поддерживают это с несколькими пикселями.

Длину дуги можно приблизительно определить по следующей формуле:

Длина дуги Forumla

Обратите внимание, что в некоторых системах длина дуги может быть отрицательной, указывая, что она движется по кругу против часовой стрелки, а не по часовой стрелке. Обычно это представлено логическим флагом, устанавливаемым вызывающей функцией.

В конкретных системах:

Для окон дуги можно рисовать с помощью функций gdi+, а также можно рисовать дуги эллипсов.

Пример на C#:

void drawArc(Graphics myGraphics, Pen myPen, float x, float y, float startTheta, float endTheta, float radius)
{
    myGraphics.DrawArc(myPen, x - radius, y - radius, radius * 2, radius * 2, startTheta, endTheta);
}

Дуги также можно рисовать с помощью эквивалентных функций рисования C++.


В Mac OS X дуги можно рисовать с помощью класса NSBezierPath в AppKit.

Пример в объекте-c:

void drawArc(float x, float y, float startTheta, float endTheta, float radius)
{
    NSBezierPath *bezierPath = [NSBezierPath bezierPath];
    [bezierPath appendBezierPathWithArcWithCenter:CGPointMake(x, y) radius:radius startAngle:startTheta endAngle:endTheta];
    [bezierPath stroke]; // draws with current set color
}

В Java вы также можете рисовать дуги, используя переносимые функции класса Graphics.