Коды 00C и 00D: Дуги, заданные прогибом
 
 
 

Специальные коды 00C и 00D (12 и 13) обеспечивают еще один способ включения дуговых сегментов в описания форм. Они аналогичны кодам 8 и 9 в том отношении, что позволяют задавать смещения по X-Y. Однако, в кодах 00C и 00D отрисовка дуг производится на основании коэффициента прогиба относительно вектора смещения. Код 00C отрисовывает один дуговой сегмент, а код 00D несколько дуговых сегментов (полидуг) до тех пор, пока не последует смещение (0,0).

За кодом 00C должны следовать три байта в формате:

0C,X-смещение,Y-смещение,прогиб

Смещения по X и Y и прогиб, который задает кривизну дуги, могут принимать значения от -127 до +127. Если длина смещения равна D, а стрелка прогиба (т.е. расстояние по нормали от середины вектора смещения до дуги) равна H, коэффициент прогиба определяется как ((2* H / D) * 127). Если дуга рисуется от текущего до нового положения по часовой стрелке, знак будет отрицательным.

Полукруг обладает прогибом 127 (или –127). Это - наибольшая дуга, которую можно построить с использованием этих кодов (более крупные дуги необходимо комбинировать из двух последовательно соединенных сегментов). Нулевым прогибом описывается прямолинейный сегмент. Однако следует отметить, что предпочтительнее представлять такие сегменты кодом 8, т.к. это экономит один байт в описании формы.

За кодом полидуги (00D, или 13) следует 0 или тройки параметров, описывающих элементарные дуговые сегменты. Полидуга заканчивается смещением (0,0). Значение прогиба после нулевого смещения задавать не требуется. Например, букву S можно описать так:

13,(0,5,127),(0,5,-127),(0,0)

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

Использование числа -128 в дуговых сегментах и полидугах не допускается.