1

我必须绘制具有更大双精度值的线条,例如 (3000.00,4500.45)。

CImg<unsigned char> img(800,800,1,3,20);
img.draw_line( 3000.00, 4500.45, 3478.567, 4500.45, RED);

但我想让我的屏幕尺寸限制在 800x800

我想在800以内取点坐标的模数 Like

3000.00%800=600

我的 Screen 可以容纳 600 个。但问题是,CPP 不支持双值模数。

double a = 3000.00;
printf("%lf",a%800.0); //Expected 600 but exception
**Invalid operand of type double,double to binary operator%**

如何使用 CImg 在我的屏幕中放置这些大点?

4

2 回答 2

1

余数运算符的操作数%不能是双精度(或浮点)使用 fmod (double numer, double denom)函数。

于 2013-09-13T05:37:38.813 回答
1

一切都取决于您要实际执行的操作:

  • 如果您只想查看在 800x800 图像上绘制的那部分线,那么什么也不做。该CImg<T>::draw_line()方法实现了剪辑,它会自动为您执行此操作。
  • 如果您想在屏幕上绘制“随机”线条并且不关心在坐标上使用模数会破坏原始线条外观的事实,那么您可以使用模数。在您的情况下,最好先将您的坐标转换为int,然后再使用%运算符:

img.draw_line( ((int)x0)%800, ((int)y0)%800, ((int)x1)%800, ((int)y1)%800, RED);

但请注意,将要绘制的线与原始线无关:做模不是绘制线的剪切方法。

于 2013-09-13T06:49:28.373 回答