这个分形的逻辑是什么?

时间:2013-03-26 07:33:55

标签: c++ logic

我正在为学校做一个项目,需要大致重现这个分形(在BGI中):

enter image description here

我一直试图找到中等大小三角形的放置逻辑,因为它们必须被绘制到for / while循环中。  (我画了主三角形和每一边的圆圈。)

感谢任何想法!

1 个答案:

答案 0 :(得分:0)

绝对是IFS。 IFS分形使用递归..它就像一个树结构,每个分支都可以有侧枝,这些也可以再次拥有自己的较小侧枝。在(类C)伪代码中它看起来像:

draw_triangle(vector2d pos, float scale, int depth)
{
  if (depth < MAX_DEPTH) return;

  /* actual graphics code for the triangle goes here.. use pos and scale */

  /* compute center positions for circles side1_pos, side2_pos, etc... */

  draw_circle(side1_pos, 0.5*scale, depth+1);
  draw_circle(side2_pos, 0.5*scale, depth+1);
  draw_circle(side3_pos, 0.5*scale, depth+1);
}

draw_circle(vector2d pos, float scale, int depth)
{
  if (depth < MAX_DEPTH) return;
  /* actual graphics code for the circle goes here.. use pos and scale */

  /* compute center positions for triangles side1_pos, side2_pos, etc... */

  draw_triangle(side1_pos, 0.5*scale, depth+1);
  draw_triangle(side2_pos, 0.5*scale, depth+1);
  draw_triangle(side3_pos, 0.5*scale, depth+1);
}