如何通过单击放大到Mandelbrot集

问题描述

我在处理过程中设法创建了Mandelbrot集,但是在实现缩放方面却很努力。这是我的代码

float minvalX = -1.5;
float minvalY = -1.5;
float maxvalX = 1.5;
float maxvalY = 1.5;
float angle = 0;
float di,dj;
int xPixel,yPixel;





void setup(){
  size(500,500);
  pixelDensity(1);
  colorMode(HSB,360);

}


void draw() {
  
  scale(zoom);
  float maxLoops = 100;
  loadPixels();

  
  float equationOneOriginal; 
  float equationTwoOriginal; 
  
  
  for (xPixel = 0; xPixel < width ; xPixeL++) {
    for (yPixel = 0; yPixel < height ; yPixeL++) {
      
      float a = map(xPixel+di,width,minvalX,maxvalX);
      float b = map(yPixel+dj,height,minvalY,maxvalY);
      
      equationOneOriginal = a;
      equationTwoOriginal = b;
      
      float n = 1;
      
      while (n < maxLoops) {
        
        float equationOne  = a*a - b*b; //First part of the equation 
        float equationTwo  = 2 * a * b; //Second part of the equation
        
        a = equationOne  + equationOneOriginal;
        b = equationTwo  + equationTwoOriginal;
        
        if (abs(a+b) > 16) {
          break;
        }
        
        n++;
      }
      

      
      if (n == maxLoops) {
      
        pixels[xPixel+yPixel*width] = color(0);
      
      }
      else {
        pixels[xPixel+yPixel*width] = color(n-(int)(n/360)*n,360,(int)map(n*6,1,maxLoops,360));
      
      }
      
    }
  }
  
  updatePixels();
  
}

void mousepressed()
{
  
  if (mouseButton == LEFT) {
    di = di + mouseX - int(width/2);
    dj = dj + mouseY - int(height/2);
    
    minvalX += 0.1;
    maxvalX -= 0.1;
    
    minvalY += 0.1;
    maxvalY -= 0.1;
    
  }
  
}



它放大到我的鼠标所在的位置,但最终它滑向中间并卡在其中。我知道这与minvalX,maxvalX,minvalY和maxvalY有关,但我不知道要对这些值做什么以使其始终向我的鼠标放大。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)