小编mas*_*sel的帖子

C++ 创建随机形状的“blob”对象

我需要定义一个对象(或一个区域),它是一种在离散网格图上形状的“斑点”。它应该是这样的:在此处输入图片说明

其中红色区域表示中心点(这些只是想法,只要可以随机变化,任何斑点形状都可以)。到目前为止,我的想法是迭代地将角度从起点(= 0 度)增加到 360 度,并使用三角学来计算圆的外点(如果半径 = 1 = 常量,这将导致单位圆)。然后我使用 Bresenham 的线算法(记住:我们在离散网格上移动)来计算连接圆心和我刚想出的外点的线。我的想法是,如果我可以稍微改变半径,我可以创建这些斑点形状。到目前为止我想出的形状给了我很好的形状,但它们并不是真正的“斑点”。这是我的代码(注意x0y0标记我的网格图的中心点,plotBresenham只需将所有内容都1s放在区域中,以便可以可视化网格图):

double radius = 10; 
for(int alpha=0; alpha<360; alpha++) {
   double x = cos(alpha*M_PI/180.0)*radius;
   double y = sin(alpha*M_PI/180.0)*radius;

   if(alpha<45) radius+=0.5;
   else if(alpha<90) radius-=0.5; 
   else if(alpha<135) radius+=0.5; 
   else if(alpha<180) radius-=0.5; 
   else if(alpha<225) radius+=0.5; 
   else if(alpha<270) radius-=0.5; 
   else if(alpha<315) radius+=0.5; 
   else radius-=0.5; 

   plotBresenhamLine(x0,y0,x,y)

}
Run Code Online (Sandbox Code Playgroud)

结果如下所示:

在此处输入图片说明

抱歉画的粗糙。编程语言是 C++,但我认为这种方法并不真正取决于所使用的语言。关于如何创建与我需要的形状相似的形状的任何提示/帮助/指导?或者甚至是一个为你做这样的事情的框架?对我来说,将点的坐标放入我的网格图中很重要。

c++ arrays drawing 2d shapes

4
推荐指数
1
解决办法
974
查看次数

标签 统计

2d ×1

arrays ×1

c++ ×1

drawing ×1

shapes ×1