Tvary a písma tvarů, 4. díl – Tvorba definičních souborů tvarů
Kód 00B: zlomkový oblouk Speciální kód 00B (11) je určen pro kreslení oblouků, jejichž koncové body nutně neleží na hranicích oktantů. Popis oblouku vyžaduje pět dalších specifikačních bajtů. 11,poč_…
Kód 00B: zlomkový oblouk
Speciální kód 00B (11) je určen pro kreslení oblouků, jejichž koncové body nutně neleží na hranicích oktantů. Popis oblouku vyžaduje pět dalších specifikačních bajtů.
11,poč_posun,kon_posun,význ_pol,poloměr,(-)0SC
Hodnoty poč_posun a kon_posun určují, jak daleko od hranice oktantu oblouk začíná, respektive končí. Hodnota význ_pol představuje nejvýznamnějších osm bitů poloměru; pokud není poloměr větší než 255 jednotek, významný poloměr bude 0. Vynásobte hodnotu význ_pol 256 a sečtením této hodnoty s hodnotou poloměr vytvoříte poloměr oblouku větší než 255. Hodnoty poloměr a poslední bajt mají stejný význam jako u kódu 00A (osminový oblouk).
Číslo poč_posun dostanete tak, že vypočítáte rozdíl (ve stupních) mezi hranicí oktantu (tj. násobkem 45 stupňů) a počátkem oblouku. Tento rozdíl vynásobíte 256 a vydělíte 45. Pokud oblouk začíná právě na hranici oktantu, hodnota poč_posun je 0.
Kon_posun se vypočítá stejným způsobem – použijete rozdíl mezi hranicí posledního protnutého oktantu a konce oblouku. Pokud oblouk končí na hranici oktantu, je kon_posun 0.
Například oblouk s poloměrem 3 začínající na 55 stupních a končící na 95 stupních se kóduje následovně:
11,(56,28,0,3,012)
Zde je vysvětlení:
poč_posun= 56 protože ((55 – 45) * 256 / 45) = 56
kon_posun= 28 protože ((95 – 90) * 256 / 45) = 28
význ_pol= 0protože (poloměr < 255)
poloměr= 3
počáteční oktant= 1protože oblouk začíná v oktantu 45 stupňů
koncový oktant = 2 protože oblouk končí v 90stupňovém oktantu
Kódy 00C a 00D: oblouky s vydutím
Speciální kódy 00C a 00D (12 a 13) jsou dalším mechanismem vkládání oblouků do definic tvarů. Podobají se kódům 8 a 9 tím, že také definují posun o X,Y. Kódy 00C a 00D kreslí oblouk pomocí faktoru vyboulení u vektoru posunutí. Kód 00C kreslí jeden oblouk, zatímco kód 00D kreslí navazující sekvenci oblouků (oblouková křivka) až do ukončení posunem (0,0).
Kód 00C musí být následován třemi bajty popisující oblouk:
0C,posun-X,posun-Y,vyboulení
Hodnoty posunu X a Y a hodnota vyboulení se mohou pohybovat od -127 do +127. Jestliže úsečkový segment určený posunutím má délku D a kolmá vzdálenost od středového bodu tohoto segmentu má výšku H, velikost vyboulení je ((2 * H / D) * 127). Pokud oblouk z aktuálního umístění do nového umístění je veden po směru pohybu hodinových ručiček, znaménko je záporné.