Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- float xprev=0, yprev=0;
- float zoom=0.0001, zoomTar=0.75, zoomTmp=1;//zoomTar - число к которому стремится переменная zoom
- float moveX=500, moveY=500;
- float x=0, y=0;
- float func(float in)
- {
- float out;
- out=sin(in);
- return out;
- }
- void drawAxis()
- {
- stroke(0, 0, 255);
- line(moveX*zoom, (moveY+50000*zoom)*zoom, moveX*zoom, (moveY-50000*zoom)*zoom);
- stroke(255, 0, 0);
- line((moveX+50000*zoom)*zoom, moveY*zoom, (moveX-50000*zoom)*zoom, moveY*zoom);
- }
- void drawGraph()
- {
- for (y=-500; y<500; y+=0.1)
- {
- x=func(y);
- line( (y*10+moveX)*zoom, (x*10+moveY)*zoom, (yprev*10+moveX)*zoom, (xprev*10+moveY)*zoom);
- xprev=x;
- yprev=y;
- }
- }
- void dot(int x, int y)
- {
- rect(x+500, y+500, 1, 1);//костыль
- }
- void mouseWheel(MouseEvent event)
- {
- zoomTmp+=event.getCount();
- zoomTar=(zoomTmp* (-1) )/5;
- while (zoomTar<0.001)
- {
- zoomTar+=0.1;
- mouseWheel();
- }
- println(event.getCount()+" "+zoomTar+" "+zoom);
- }
- void keyPressed()
- {
- println(key);
- if (key=='r')
- {
- moveX=0;
- moveY=0;
- }
- }
- void varDraw()
- {
- text("X:"+moveX, 10, 10);
- text("Y:"+moveY, 10, 30);
- text("zoom:"+zoom, 10, 50);
- }
- void setup()
- {
- //Настройки
- smooth(16);
- size(1000, 1000, P3D);
- stroke(255);
- background(0);
- frameRate(600);
- fill(255);
- translate(500, 500);
- }
- void draw()
- {
- background(0);
- stroke(255);
- //вывод переменных
- varDraw();
- //сохраняем значения с предыдущего кадра
- xprev=x;
- yprev=y;
- //рисуем график+оси xy
- drawGraph();
- drawAxis();
- //костыль для плавного зума
- zoom=(zoom+zoom+zoom+zoom+zoomTar)/5;
- //mousePressed() не работает
- if(mousePressed==true)
- {
- moveX+=(mouseX-pmouseX)/zoom;
- moveY+=(mouseY-pmouseY)/zoom;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment