BlochFrame.java 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package de.andreasvoelker;
  2. import com.jogamp.opengl.GLCapabilities;
  3. import com.jogamp.opengl.GLCapabilitiesImmutable;
  4. import com.jogamp.opengl.GLProfile;
  5. import com.jogamp.opengl.awt.GLCanvas;
  6. import com.jogamp.opengl.util.Animator;
  7. import org.jetbrains.annotations.NotNull;
  8. import java.awt.event.*;
  9. public class BlochFrame extends GLCanvas {
  10. final @NotNull BlochRenderer renderer;
  11. final @NotNull Animator animator;
  12. final RenderState state;
  13. class MyMouseMotionListener implements MouseMotionListener {
  14. int prevX, prevY;
  15. @Override
  16. public void mouseDragged(@NotNull MouseEvent e) {
  17. int dx = e.getX()-prevX;
  18. int dy = e.getY()-prevY;
  19. state.setPitch(state.getPitch()+0.01f*dx);
  20. state.setYaw(state.getYaw()+0.01f*dy);
  21. prevX = e.getX();
  22. prevY = e.getY();
  23. }
  24. @Override
  25. public void mouseMoved(@NotNull MouseEvent e) {
  26. prevX = e.getX();
  27. prevY = e.getY();
  28. }
  29. }
  30. class MyMouseWheelListener implements MouseWheelListener {
  31. @Override
  32. public void mouseWheelMoved(@NotNull MouseWheelEvent e) {
  33. System.out.println("Executed");
  34. System.out.println(e.getWheelRotation());
  35. state.setRadius(state.getRadius()+0.1f*(float)e.getWheelRotation());
  36. }
  37. }
  38. BlochFrame(RenderState state){
  39. super(getCapabilities());
  40. this.state = state;
  41. renderer = new BlochRenderer(state);
  42. addGLEventListener(renderer);
  43. setSize(400, 400);
  44. animator = new Animator(this);
  45. animator.start();
  46. addMouseMotionListener(this.new MyMouseMotionListener());
  47. addMouseWheelListener(this.new MyMouseWheelListener());
  48. }
  49. private static @NotNull GLCapabilitiesImmutable getCapabilities() {
  50. final GLProfile profile = GLProfile.get(GLProfile.GL2);
  51. return new GLCapabilities(profile);
  52. }
  53. }