PDA

View Full Version : سوال: الگوریتم رسم بیضی روش نقطه میانی



mekrami
یک شنبه 09 خرداد 1395, 22:51 عصر
سلام دوستان من این الگوریتم رو نوشتم برای رسم یک بیضی به روش برزنهام یا همون نقطه میانی اما درست کار نمیکنه کسی میتونه کمکم کنه خطاش رو برطرف کنم ؟

Bitmap bit = new Bitmap(800, 800);
pictureBox1.Image = bit;
Color c = Color.Red;
int xc = int.Parse(textBox1.Text);
int yc = int.Parse(textBox2.Text);
int a = int.Parse(textBox3.Text);
int b = int.Parse(textBox4.Text);
int x0 = 0;
int y0 = b;
int bb = b * b;
int aa = a * a;
int p0 = bb + 1/4 * aa - aa * b;
int fx = 2 * bb * a;
int fy = 2 * aa * b;

bit.SetPixel(xc + x0, yc + y0, c);
bit.SetPixel(xc - x0, yc + y0, c);
bit.SetPixel(xc - x0, yc - y0, c);
bit.SetPixel(xc + x0, yc - y0, c);

while (fx>=fy)
{
if(p0<=0)
{
x0 = x0++;
p0 = p0 + 3 * bb + 2 * bb * x0;

}
else
{
x0++;
y0--;
p0 = p0 + bb * 3 + 2 * x0 + aa * -2 * y0 + 2;
}
bit.SetPixel(xc + x0, yc + y0, c);
bit.SetPixel(xc - x0, yc + y0, c);
bit.SetPixel(xc - x0, yc - y0, c);
bit.SetPixel(xc + x0, yc - y0, c);

}
int xx = (x0 + 1 / 2) * (x0 + 1 / 2);
int yy = (y0 - 1) * (y0 - 1);
int p01 = bb * xx + aa * yy - aa * bb;
while(fx<=fy)
{
if(p01>=0)
{
x0++;
y0--;
p01 = p01 + aa * (3 - 2 * y0);
}
else
{
y0--;
p01 = p01 + bb * (2 * x0 + 2) + aa * (3 - 2 * y0);
}

bit.SetPixel(xc + x0, yc + y0, c);
bit.SetPixel(xc - x0, yc + y0, c);
bit.SetPixel(xc - x0, yc - y0, c);
bit.SetPixel(xc + x0, yc - y0, c);
}