All pastes #295256 Raw Edit

Something

public text v1 · immutable
#295256 ·published 2006-12-29 06:21 UTC
rendered paste body
import processing.opengl.*;
static final float ENVRAD = 1000;
Vec2 mp = new Vec2();
Vec2 pmp = new Vec2();
Vec2 cam = new Vec2();
Vec2 camTarget = new Vec2();
float zoom = 0;
float zoomTarget = 0;
MouseWheelEventDemo wheel; 
int wheelNotches = 0;
float widthHalf = 150;
float heightHalf = 150;

void setup(){
  size(300,300,OPENGL);
  
  widthHalf = width/2;
  heightHalf = height/2;
  
  ellipseMode(CENTER);
  wheel = new MouseWheelEventDemo(); 
}

void draw(){
  background(255); 
  cam = lerp(cam,camTarget,.2);
  zoom = lerp(zoom,zoomTarget,.2);    

  float absMouseX = screenX(mouseX - cam.x - widthHalf,mouseY - cam.y,zoom - heightHalf);
  float absMouseY = screenY(mouseX - cam.x - widthHalf,mouseY - cam.y,zoom - heightHalf);  
  
  float abspMouseX = screenX(pmouseX - cam.x - widthHalf,pmouseY - cam.y,zoom - heightHalf);
  float abspMouseY = screenY(pmouseX - cam.x - widthHalf,pmouseY - cam.y,zoom - heightHalf);  

  translate(widthHalf,heightHalf);
  translate(cam.x,cam.y,zoom);  
  
  
  mp.nowEquals(absMouseX,absMouseY);
  pmp.nowEquals(abspMouseX,abspMouseY);    
  
  if(mousePressed){
    camTarget.add(new Vec2(pmp,mp));
  } 
  
  drawScreenZero(); 
  drawOrigin();
  drawEnvBounds();
  drawMp();
}

void drawScreenZero(){
  float sxz = -widthHalf ;
  float syz = -heightHalf ;
  
  float scx = sxz + tan(radians(45)) * zoom;
  float scy = syz + tan(radians(45)) * zoom;  
  
  println("sxzsyz: " + sxz + " , " + syz);
  println("scxscy: " + scx + " , " + scy);  
  noFill();
  stroke(0);
  strokeWeight(1);
  ellipse(scx,scy,40,40);
}

void drawEnvBounds(){
  noFill();
  stroke(180);
  strokeWeight(4);
  smooth();
  
  ellipse(0,0,ENVRAD,ENVRAD);
}

void drawOrigin(){
  noFill();
  stroke(255,0,0);
  strokeWeight(1);
  noSmooth();
  ellipse(0,0,10,10);
}

void drawMp(){
  noFill();
  stroke(0,0,255);
  strokeWeight(1);
  noSmooth();
  ellipse(mp,30);
}

public class MouseWheelEventDemo implements MouseWheelListener {
  public MouseWheelEventDemo() {
    addMouseWheelListener(this);
  }
  public void mouseWheelMoved(MouseWheelEvent e) {
    int notches = e.getWheelRotation();    
    wheelNotches = abs(notches);        
    if(notches<0){
      mouseWheelUp();  
    }else{
      mouseWheelDown();
    }
  }
}
 
void mouseWheelUp(){
  zoomTarget-=50;
}
void mouseWheelDown(){
  zoomTarget+=50;  
}