Практика программирования (Бейсик, Си, Паскаль)


         

Смещения по координатам относительно предыдущей





























































Номер точки


Смещения по координатам относительно предыдущей точки


Для горизонтального сегмента


Для вертикального сегмента


По х


По у


Пох


По у


3


а


а





а


4





а








5


-b


0


0


-b


Из табл. 8.4 видно, что при реализации программы достаточно иметь всего два массива смещений:

d1 = (0, а,b, а,-а,-а) и d2 = (0,-а, 0, а, а, 0)

Для вертикального сегмента они меняются местами и у одного из них меняются знаки.

Установим соотношения между точкой привязки цифры и координатами начальных точек каждого из семи сегментов. Пронумеруем сверху вниз числами 1, 2 и 3 горизонтальные сегменты, а числами 1, 2, 3 и 4 — вертикальные сегменты слева направо и сверху вниз. Несложно убедиться в том, что координаты их нулевых вершин вычисляются следующим образом.

Для горизонтальных сегментов:
xl = х х2 = х х3= х

yl = у у2 = у + с уЗ = у + 2*с
Для вертикальных сегментов:

xl=x х2=х+с х3=х х4 = х + с

yl = у у2 = у у3 = у + с у4=у + с

Совет 2 (Си)

Для того-чтобы установить соответствие между числовым значением отображаемой цифры и составляющим ее набором сегментов, предлагается использовать семиразрядные двоичные числа, единичные разряды в которых устанавливают присутствие того или иного сегмента. Например, контур цифры 0 образуется первым и третьим горизонтальными сегментами и всеми четырьмя вертикальными. Поэтому цифре 0 можно поставить в соответствие код 1011111. Цифра 9 описывается кодом 1111101 и т. д. В приведенном ниже тексте программы на Си эти коды представлены не самым рациональным способом — в виде двумерного массива. Более оптимальный вариант предложен в следующем задании:

Программа 8_15.с

/* Построение 7-сегментных цифр */
#include <stdio.h>

#include <conio.h>

#include <graphics.h>

void cifra(int x,int y,int n) ;

void main() {

int gd=0,gm, k;
initgraph(&gd,&gm,"");
setcolor(4);
for(k=0;k<10;k++)

cifrat(k+1)*50,30,k) ; getch(}; return;

Содержание  Назад  Вперед