Специальный код 00B (11) инициирует отрисовку дуги, которая может начинаться и заканчиваться не на границе октанта. В описании используются 5 байт.
11,смещение_начала,смещение_конца,радиус_ст,радиус,(-)0SC
Смещение_начала и смещение_конца задают величины удаления начальной и конечной точек дуги от границ октанта. Радиус_ст - это старшие 8 бит значения радиуса; они остаются нулевыми, если радиус не превышает 255 единиц. Для того чтобы получить значение радиуса дуги, превышающего 255 единиц, нужно умножить радиус_ст на 256 и добавить к полученному числу радиус. Радиус и завершающий байт задаются точно так же, как и для описанной ранее октантной дуги (код 00A).
Смещениеначала определяется путем вычисления разности (в градусах) между начальной границей октанта (кратной 45 градусам) и началом дуги. Затем эта разность умножается на 256 и делится на 45. Если дуга начинается на границе октанта, смещение_начала равно 0.
Смещение_конца вычисляется аналогичным образом, но при этом используется разность (в градусах) между последней границей октанта, пересеченной дугой, и концом дуги. Если дуга заканчивается на границе октанта, смещение_конца равно 0.
Например, дробная дуга радиусом 3 единицы, проведенная между направлениями 55 и 95 градусов, кодируется так:
11,(56,28,0,3,012)
Пояснение к значениям параметров:
смещение_начала = 56, так как ((55 - 45) * 256 / 45) = 56
смещение_конца = 28, так как ((95 - 90) * 256 / 45) = 28
радиус_ст = 0 , так как (радиус < 255)
радиус = 3
начальный октант = 1, так как дуга начинается в октанте 45 градусов
конечный октант = 2 , так как дуга заканчивается в октанте 90 градусов