使用math pow,在double和int之间更改变量(android位图)

时间:2011-05-08 11:08:43

标签: android math bitmap

我逐个像素地循环一个位图,以确定该像素是否位于位图上的圆圈内。我已经给了数学确定这个但算法是使用pow(double,double)。我已经尝试使用Integer.doubleValue进行转换并无效。有没有人有任何想法如何让pow方法返回sqrt()方法需要的int? centreX和centreY也都是int。

[更新] 抱歉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);
                    }
                }
            }

4 个答案:

答案 0 :(得分:1)

全心全意,

我的错误,pow()方法是Math类的静态方法,因此需要点运算符静态访问它。愚蠢的错误:)例如Math.pow(d,d);

答案 1 :(得分:0)

将代码划分为更多行,以便更容易找到导致错误的行:

请记住这是伪代码: - )

double a = pow(i - centreX, 2);
double b = pow(y - centreY, 2);

int c = (parse to int) (a + b)

int root = sqrt( c )

然后调试这些行以发现错误: - )

答案 2 :(得分:0)

如果我理解正确并且您的问题是如何将double转换为int,为什么不在Math内使用floor或ceil函数?

答案 3 :(得分:0)

只需引入常量rsquared = radius*radius并将条件更改为if ((i-centreX)*(i-centreX)+(y-centreX)*(y-centreX) <= rsquared)。不需要浮动点。