我有一个8bit-bitmap 1440:1080的图像,上面有一个居中的圆圈。现在,我想操纵这个圈子之外的一切。该图像由指针*img
指向。
我想用距离来做,就像下面的伪代码:
unsigned char* img;
for (l = 0; l < width; l++) {
for (j = 0; j < height; j++) {
if(sqrt(pow(x2-x1,2) + pow(y2-y1,2)) > radius ){
*(img + j * width + l) = 0;
}
}
}
您可能已经注意到,我的问题是如何将x1,x2,y1,y2
与j
和l
关联起来。
我想做一个这样的函数:
typedef struct {
int x;
int y;
} coord;
coord getCoords(int index, int width){
coord output;
output.y=0;
while(index>=width){
index=index-width;
output.y+=1;
}
output.x=index;
return output;
}
输入的index
就是j * width + l
,我想知道它是否在圆内。中心像素是[720,540],或者更精确地说是[720.5,540.5]。
我说错了吗?还是有更好的办法?
PS:在函数内部创建坐标的局部变量,并在函数内部进行数学运算(距离计算)并返回bool
会更简单。而不是创建新类型的变量。
1条答案
按热度按时间zzlelutf1#
使用