[an error occurred while processing this directive]
|
Для дисплея 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