Смещения по координатам относительно предыдущей
|
|
|
|
|
|
|
|
Номер точки
|
Смещения по координатам относительно предыдущей точки
|
|
|
Для горизонтального сегмента
|
Для вертикального сегмента
|
|
|
По х
|
По у
|
Пох
|
По у
|
|
|
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;
Содержание Назад Вперед