我逐个像素地遍历位图,以确定该像素是否在位图上放置的圆圈内。我得到了很好的数学知识来确定这一点,但算法使用的是pow(double,double)。我尝试过强制转换和使用Integer.doubleValue,但都无济于事。有没有人知道如何让pow方法返回sqrt()方法所需的int?centreX和centreY都是整型的。
更新对不起,sqrt返回并需要一个双精度值:)
谢谢,麦特。
for (int i=0; i < bgr.getWidth(); ++i) {
for (int y=0; y < bgr.getHeight(); ++y) {
int aPixel = bgr.getPixel(i,y);
if( sqrt( pow(i - centreX, 2) + ( pow(y - centreY, 2) ) ) <= radius ){
bgr.setPixel(i,y,Color.MAGENTA);
}
}
}发布于 2011-05-08 19:33:07
谢谢大家,
糟糕的是,来自Math类的pow()方法是静态的,所以需要使用点运算符来静态地访问它。愚蠢的错误:)例如Math.pow(d,d);
发布于 2011-05-08 19:13:59
将代码分成更多行,以便更容易发现导致错误的行:
请记住,这是伪代码:-)
double a = pow(i - centreX, 2);
double b = pow(y - centreY, 2);
int c = (parse to int) (a + b)
int root = sqrt( c )然后调试这些行以发现错误:-)
发布于 2011-05-08 19:16:04
如果我理解正确,您的问题是如何将double转换为int,为什么不在Math中使用floor或ceil函数
https://stackoverflow.com/questions/5927059
复制相似问题