[an error occurred while processing this directive]
Вообще-то на это есть GUI, но в запасниках лежат старые добрые функции.Пикселы,я понимаю, вы умеете выводить.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено cout 04 апреля 2003 г. 10:13
В ответ на: Просьба о воспоможествовании. отправлено Belov 04 апреля 2003 г. 10:01

Для дисплея 128х64. Pixel - функция вывода/стирания пискела.

Вычерчивание эллипса ( pain=0 - стереть, pain==1 - рисовать
xc,yc - коорд-ты центра, r - радиус,
ra - отношение осей. При ra == 1.00
получится окружность )
void Ellips( unsigned char pain, unsigned char xc, unsigned char yc,
unsigned char r, float ra )
{
float a, da, re, dx, dy;
if( ( (xc+r) > 0x7f ) || ( (yc+r) > 0x3f ) ) return;
Pixel( pain, (xc+r), yc );
Pixel( pain, (xc-r), yc );
Pixel( pain, xc, ( yc + (unsigned char)( (float)(r)*ra ) ) );
Pixel( pain, xc, ( yc - (unsigned char)( (float)(r)*ra ) ) );
da = ( 1.0 / (float)(r) );
re = (45.0 * 3.141593 / 180.0 );
for( a=da; a<=re; a=(a+da) ) {
dx = r * cos( a );
dy = r * sin( a );
Pixel( pain, xc+(unsigned char)(dx), yc+(unsigned char)(dy*ra) );
Pixel( pain, xc-(unsigned char)(dx), yc+(unsigned char)(dy*ra) );
Pixel( pain, xc+(unsigned char)(dx), yc-(unsigned char)(dy*ra) );
Pixel( pain, xc-(unsigned char)(dx), yc-(unsigned char)(dy*ra) );

Pixel( pain, xc+(unsigned char)(dy), yc+(unsigned char)(dx*ra) );
Pixel( pain, xc-(unsigned char)(dy), yc+(unsigned char)(dx*ra) );
Pixel( pain, xc+(unsigned char)(dy), yc-(unsigned char)(dx*ra) );
Pixel( pain, xc-(unsigned char)(dy), yc-(unsigned char)(dx*ra) );
}
}

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru