Math “编程数学”;喷漆“;程序类似于ms paint

Math “编程数学”;喷漆“;程序类似于ms paint,math,Math,我正试图写一个喷漆式的程序,但我把数学全忘了 我需要某种概率方程来选择用户点击位置附近的像素。因此,靠近中心的概率应该很高,然后随着离中心的距离越来越远而减小,一旦达到某一距离,概率应该为零。 另外,中间的概率应该是一条平滑曲线(如果你知道我的意思的话)我不确定你在用哪种语言编码,所以这里有一些伪代码。我将假设您知道所用语言的相应语法 //参数: //半径是笔刷的半径(以像素为单位) //强度是从0.0到1.0的两倍范围,并乘以像素被绘制的概率 功能喷漆(内半径,双倍强度){ 强度=(强度*2)

我正试图写一个喷漆式的程序,但我把数学全忘了

我需要某种概率方程来选择用户点击位置附近的像素。因此,靠近中心的概率应该很高,然后随着离中心的距离越来越远而减小,一旦达到某一距离,概率应该为零。
另外,中间的概率应该是一条平滑曲线(如果你知道我的意思的话)

我不确定你在用哪种语言编码,所以这里有一些伪代码。我将假设您知道所用语言的相应语法

//参数:
//半径是笔刷的半径(以像素为单位)
//强度是从0.0到1.0的两倍范围,并乘以像素被绘制的概率
功能喷漆(内半径,双倍强度){
强度=(强度*2)-1;//将逻辑应用程序的强度从0.0->1.0更改为-1.0->1.0
//对于正方形内的每个像素。。。
对于(int x=-radius;x=0.0)
概率+=((1-概率)*强度);
其他的
概率+=概率*强度;
如果(距离>半径){
continue;//如果该像素超出圆的半径,则跳过该像素
}
如果(随机(0.0到1.0)<概率){//如果我们随机取一个比概率低的小数点
setPixel(mouse.x+x,mouse.y+y,“黑色”);//绘制此像素
}
}
}
}
基本思想是:

Iterate through each pixel and...

1. Find its distance from the center pixel (The clicked pixel).
2. Get distance/radius (0.0 to 1.0) and find the corresponding sine, creating a
   smooth probability curve.
3. Apply the supplied strength to the probability.
4. Pull a random double 0.0 to 1.0 and draw the pixel if it's within our probability.