|
программное рисование во flash mx. управление кривыми. (часть ii)Первая строчка проверяет, заданы ли ещё какие-нибудь аргументы, кроме первых двух/трёх (массив координат центра и массив радиусов эллипса/радиус окружности, плю учитываем флаг Dir). Если условие выполнено, то проверяем, является ли третий аргумент массивом. Если нет, то это угол между главной осью эллипса и горизонтальной осью координат. Присваиваем его значение переменной ARadAngle, переведённое из градусной меры в радианную, и процесс передачи аргументов метода его локальным переменным на этом закончен. А вот если третий аргумент - массив, то это значения углов начала и конца дуги. Присваиваем их переменным StartAngle и EndAngle (снова предварительно переводя их из градусной меры в радианную) и затем... Затем следует фрагмент кода, в котором происходит преобразование значений углов начала и конца дуги. if (ARadius != BRadius){ if (cos(StartAngle) <0){ StartAngle = PI+atan(ARadius*tan(StartAngle)/BRadius); } else if (cos(StartAngle) > 0){ StartAngle = atan(ARadius*tan(StartAngle)/BRadius); }; if (cos(EndAngle) <0){ EndAngle = PI+atan(ARadius*tan(EndAngle)/BRadius); } else if (cos(EndAngle) > 0) { EndAngle = atan(ARadius*tan(EndAngle)/BRadius); }; }; Вспомним, как устроем наш алгоритм: сначала строим окружность (здесь и далее, когда в тексте будут упоминаться окружность, дуга или эллипс и преобразования, связанные с ними, подразумевается, что речь идёт о контрольных и якорных точках), затем растягиваем окружность по горизонтали до эллипса, поворачиваем эллипс на заданный угол и в конце переносим его из начала координат в заданную точку (CenterX, CenterY). На стадии маштабирования значения углов меняются. Поэтому мы сразу меняем значения начального и конечного углов дуги, чтобы после маштабирования получить исходный угол. Преобразования имеет смысл делать только в том случае, если у нас эллипс, поэтому проверяется неравенство радиусов. Эти преобразования - вопрос чисто математический, поэтому если вы имеете представление об аффинных преобразованиях или просто не хотите вникать в суть процесса, можете пропустить следующий абзац. Всех остальных прошу взглянуть на рисунок: Продолжение статьи: ч.1 Продолжение статьи: ч.2 Продолжение статьи: ч.3 Продолжение статьи: ч.4 Продолжение статьи: ч.5 Продолжение статьи: ч.6 Продолжение статьи: ч.7 Продолжение статьи: ч.8 Продолжение статьи: ч.9 Продолжение статьи: ч.10 Продолжение статьи: ч.11 Продолжение статьи: ч.12 Продолжение статьи: ч.13 Продолжение статьи: ч.14 Другие статьи по теме: - использование flash, javascript и fscommand.- создание элементов сайтов с использованием flash - Flash баннер - Flash для чайников - неожиданные применения flash |
|
2006-2024 © SMTI.RU Главная страница | Связаться с нами |