"А чтоб овал", да чтоб не так доставал. Эллипс есть. Он же окружность. Нужен?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено cout 14 января 2005 г. 17:47
В ответ на: А чтоб овал? отправлено НиколайЕ 14 января 2005 г. 13:24

/****************************************************************/
/* Вычерчивание эллипса ( 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) > MAX_SCREEN_X ) || ( (yc+r) > MAX_SCREEN_Y ) )
{
return;
}/*if*/

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) );

}/*for*/
}/*Ellips*/
/*************************************************************/


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

Ответы



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

E-mail: info@telesys.ru