هانی هاشمی
یک شنبه 29 فروردین 1389, 12:59 عصر
سلام دوستان
داخل الگوریتم زیر خطی هست به این شکل :
if (error || (ix > 0))
یه متغیر boolean با یه متغیر int اوور (or) می شن :متعجب:
این خط توی جاوا ارور می ده و برنامه اجرا نمی شه
می شه بگین این خط در حقیقت چی کار می کنه و در چه صورتی true و در چه صورتی false ؟؟
ممنون
void Bresenham(int x1,
int y1,
int x2,
int y2)
{
int delta_x = std::abs(x2 - x1) << 1;
int delta_y = std::abs(y2 - y1) << 1;
// if x1 == x2 or y1 == y2, then it does not matter what we set here
signed char ix = x2 > x1?1:-1;
signed char iy = y2 > y1?1:-1;
plot(x1, y1);
if (delta_x >= delta_y)
{
// error may go below zero
int error = delta_y - (delta_x >> 1);
while (x1 != x2)
{
if (error >= 0)
{
if (error || (ix > 0)) ////////// this line
{
y1 += iy;
error -= delta_x;
}
// else do nothing
}
// else do nothing
x1 += ix;
error += delta_y;
plot(x1, y1);
}
}
else
{
// error may go below zero
int error = delta_x - (delta_y >> 1);
while (y1 != y2)
{
if (error >= 0)
{
if (error || (iy > 0)) //////////////// this line
{
x1 += ix;
error -= delta_y;
}
// else do nothing
}
// else do nothing
y1 += iy;
error += delta_x;
plot(x1, y1);
}
}
}
داخل الگوریتم زیر خطی هست به این شکل :
if (error || (ix > 0))
یه متغیر boolean با یه متغیر int اوور (or) می شن :متعجب:
این خط توی جاوا ارور می ده و برنامه اجرا نمی شه
می شه بگین این خط در حقیقت چی کار می کنه و در چه صورتی true و در چه صورتی false ؟؟
ممنون
void Bresenham(int x1,
int y1,
int x2,
int y2)
{
int delta_x = std::abs(x2 - x1) << 1;
int delta_y = std::abs(y2 - y1) << 1;
// if x1 == x2 or y1 == y2, then it does not matter what we set here
signed char ix = x2 > x1?1:-1;
signed char iy = y2 > y1?1:-1;
plot(x1, y1);
if (delta_x >= delta_y)
{
// error may go below zero
int error = delta_y - (delta_x >> 1);
while (x1 != x2)
{
if (error >= 0)
{
if (error || (ix > 0)) ////////// this line
{
y1 += iy;
error -= delta_x;
}
// else do nothing
}
// else do nothing
x1 += ix;
error += delta_y;
plot(x1, y1);
}
}
else
{
// error may go below zero
int error = delta_x - (delta_y >> 1);
while (y1 != y2)
{
if (error >= 0)
{
if (error || (iy > 0)) //////////////// this line
{
x1 += ix;
error -= delta_y;
}
// else do nothing
}
// else do nothing
y1 += iy;
error += delta_x;
plot(x1, y1);
}
}
}