Листинг 3.14. Рисование дуги окружности
void drawArc(Point2 center, float radius, float startAngle, float sweep) {
// startAngle and sweep are in degrees
// startAngle и sweep измеряются в градусах
const int n - 30: // number of intermediate segments in arc // число промежуточных отрезков дуги
float angle - startAngle * 3.14159265 / 180: // initial angle in radians // начальный угол в радианах
float anglelnc - sweep * 3.14159265 /(180 * n): // angle increment // увеличение угла
float cx center.getXO. cy - center.getYO:
cvs.moveTo(cx + radius * cos(angle), cy + radius * sin(angle)): fordnt k - 1: k < n: k++. angle +- anglelnc)
cvs.lineTo(cx + radius * cos(angle). cy + radius * sin(angle)):
}
CP остается в последней точке дуги. В ряде случаев предпочитают опускать начальную команду moveToO по направлению к первой точке дуги, чтобы соединить дугу с той фигурой, которая была нарисована к моменту вызова drawArcC).
Значительно более быстрая подпрограмма рисования дуги, которая рассматривается в главе 5, не проделывает многократно повторяющихся вычислений функций sin( ) и cos( ). Вместо приведенной здесь процедуры можно с успехом использовать ту подпрограмму.
Cara efektif manajemen bankroll untuk bermain slot dalam jangka waktu panjang.
Располагая функцией drawArcO, нетрудно написать подпрограмму drawCircle(Point2 center, float radius), рисующую окружность целиком. (Как?)
Подпрограмма drawCircleO вызывается спецификацией центра (center) и радиуса (radius), однако существуют другие способы описания окружности, которые имеют широкое применение в интерактивной графике и автоматизированном проектировании. Вот два самых известных из них.
3.7. Рисование окружностей и дуг
1. Задаются центр и точка на окружности. В этом случае подпрограмму сігаїЛі гс!е() можно использовать, если известен радиус. Если с - центр, ар - заданная точка на окружности, то радиус просто равен расстоянию от с до р, которое легко найти с помощью обычной теоремы Пифагора.
2. Заданы три точки, через которые должна пройти окружность. Известно, что через три точки, не лежащие на одной прямой, проходит единственная окружность. В главе 4 обсуждается, как определить центр и радиус этой окружности.