Guest User

Untitled

a guest
Jun 10th, 2020
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.87 KB | None | 0 0
  1. float xprev=0, yprev=0;
  2. float zoom=0.0001, zoomTar=0.75, zoomTmp=1;//zoomTar - число к которому стремится переменная zoom
  3. float moveX=500, moveY=500;
  4. float x=0, y=0;
  5.  
  6. float func(float in)
  7. {
  8.   float out;
  9.   out=sin(in);
  10.   return out;
  11. }
  12. void drawAxis()
  13. {
  14.   stroke(0, 0, 255);
  15.   line(moveX*zoom, (moveY+50000*zoom)*zoom, moveX*zoom, (moveY-50000*zoom)*zoom);
  16.   stroke(255, 0, 0);
  17.   line((moveX+50000*zoom)*zoom, moveY*zoom, (moveX-50000*zoom)*zoom, moveY*zoom);
  18. }
  19. void drawGraph()
  20. {
  21.   for (y=-500; y<500; y+=0.1)
  22.   {
  23.     x=func(y);
  24.     line( (y*10+moveX)*zoom, (x*10+moveY)*zoom, (yprev*10+moveX)*zoom, (xprev*10+moveY)*zoom);
  25.     xprev=x;
  26.     yprev=y;
  27.   }
  28. }
  29. void dot(int x, int y)
  30. {
  31.   rect(x+500, y+500, 1, 1);//костыль
  32. }
  33. void mouseWheel(MouseEvent event)
  34. {
  35.   zoomTmp+=event.getCount();
  36.   zoomTar=(zoomTmp* (-1) )/5;
  37.   while (zoomTar<0.001)
  38.   {
  39.     zoomTar+=0.1;
  40.     mouseWheel();
  41.   }
  42.   println(event.getCount()+" "+zoomTar+" "+zoom);
  43. }
  44. void keyPressed()
  45. {
  46.   println(key);
  47.   if (key=='r')
  48.   {
  49.     moveX=0;
  50.     moveY=0;
  51.   }
  52. }
  53. void varDraw()
  54. {
  55.   text("X:"+moveX, 10, 10);
  56.   text("Y:"+moveY, 10, 30);
  57.   text("zoom:"+zoom, 10, 50);
  58. }
  59. void setup()
  60. {
  61.   //Настройки
  62.   smooth(16);
  63.   size(1000, 1000, P3D);
  64.   stroke(255);
  65.   background(0);
  66.   frameRate(600);
  67.   fill(255);
  68.   translate(500, 500);
  69. }
  70. void draw()
  71. {
  72.   background(0);
  73.   stroke(255);
  74.   //вывод переменных
  75.   varDraw();
  76.   //сохраняем значения с предыдущего кадра
  77.   xprev=x;
  78.   yprev=y;
  79.   //рисуем график+оси xy
  80.   drawGraph();
  81.   drawAxis();
  82.   //костыль для плавного зума
  83.   zoom=(zoom+zoom+zoom+zoom+zoomTar)/5;
  84.   //mousePressed() не работает
  85.   if(mousePressed==true)
  86.   {
  87.   moveX+=(mouseX-pmouseX)/zoom;
  88.   moveY+=(mouseY-pmouseY)/zoom;
  89.   }
  90. }
Advertisement
Add Comment
Please, Sign In to add comment