PDA

View Full Version : رسم و خط و دایره و بیضی



farghabil
دوشنبه 06 آذر 1391, 20:14 عصر
سلام به دوستای گلم

معذرت بابت این سول ها
میخواستم نحوه کشیدن دایره بیضی به روش قطبی و نقطه میانی رو بهم بگید
ممنون میشم
به زبان c

م کدخدارستم
دوشنبه 06 آذر 1391, 20:49 عصر
. C++ اين الگوريتم در زبان نقطه میانی برای رسم بیضی
void midpoint_ellipse(const int h,const int k,const int a,const int b)
{
float aa=(a*a);
float bb=(b*b);
float aa2=(aa*2);
floatbb2=(bb*2);
float x=0;
float y=b;
float fx=0;
float fy=(aa2*b);
float p=(int)(bb-(aa*b)+(0.25*aa)+0.5);
putpixel((h+x),(k+y),color);
putpixel((h+x),(k-y),color);
putpixel((h-x),(k-y),color);
putpixel((h-x),(k+y),color);
while(fx<fy)
{
x++;
fx+=bb2;
if(p<0)
p+=(fx+bb);
else {
y--;
fy-=aa2;
p+=(fx+bb-fy);
}
putpixel((h+x),(k+y),color);
putpixel((h+x),(k-y),color);
putpixel((h-x),(k-y),color);
putpixel((h-x),(k+y),color);
}
p=(int)((bb*(x+0.5)*(x+0.5))+(aa*(y-1)*(y-1))-(aa*bb)+0.5);
while(y>0) {
y--;
fy-=aa2;
if(p>=0)
p+=(aa-fy);
else {
x++;
fx+=bb2;
p+=(fx+aa-fy);
}
putpixel((h+x),(k+y),color);
putpixel((h+x),(k-y),color);
putpixel((h-x),(k-y),color);
putpixel((h-x),(k+y),color);
}
}