Advertisement
Guest User

Untitled

a guest
Jan 17th, 2020
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.00 KB | None | 0 0
  1. import java.awt.Color;
  2. import java.awt.Dimension;
  3. import java.awt.EventQueue;
  4. import java.awt.Graphics;
  5. import java.awt.Polygon;
  6. import java.awt.Toolkit;
  7. import java.awt.event.ActionEvent;
  8. import java.awt.event.ActionListener;
  9.  
  10. import javax.swing.*;
  11.  
  12.  
  13.  
  14. public class A12 extends JFrame{
  15.  
  16. MyComponent komponent;
  17. int MAXN=400;
  18. int n=0;
  19. int alfa=0;
  20. Timer timer;
  21. int [] xtab=new int[MAXN];
  22. int [] ytab=new int[MAXN];
  23. int D=20;
  24. class MyComponent extends JComponent{
  25.  
  26. @Override
  27. protected void paintComponent(Graphics g) {
  28. int w=getWidth();
  29. int h=getHeight();
  30. int x=0,y=0;
  31. int x0=w/2;
  32. int y0=h/2;
  33. int r1=w/4;//promien duzy
  34. int r2=r1/2;//promien maly
  35. double katN=-Math.PI/2.0+Math.toRadians(alfa);
  36. double katS=Math.PI/2.0+Math.toRadians(alfa);
  37. double katE=Math.toRadians(-alfa);
  38. double katW=Math.PI+Math.toRadians(-alfa);
  39.  
  40. g.drawArc(x0-r1, y0-r1, r1*2, r1*2, 0+alfa, 180);
  41. g.drawLine(xKart(x0, r1, katW), yKart(y0, r1, katW), x0, y0);
  42. g.drawArc(xKart(x0, r2, katE)-r2, yKart(y0, r2, katE)-r2, r2*2, r2*2, 180+alfa, 180);
  43. g.setColor(Color.RED);
  44.  
  45.  
  46. int b=(int)(Math.PI*r2); //maly luk
  47. int a = (int)(Math.PI*r1); //duzy łuk 2 pi r -bo na polowe
  48. int c = r1; //prosta
  49.  
  50. int obw = a+c+b;
  51. int nc=MAXN*c/obw; // liczba skoków dla duzego luku
  52. int nb=MAXN*b/obw ; // liczba skoków dla małego luku
  53. int na=MAXN-nc-nb; // liczba skoków dla prostej
  54.  
  55.  
  56. if(n<nb) {
  57. double kat=Math.PI+Math.PI*(n)/nb-Math.toRadians(alfa);
  58. x=(int)Math.round((xKart(x0, r2, katE)-r2*Math.cos(kat)));
  59. y=(int)Math.round((yKart(y0, r2, katE)-r2*Math.sin(kat)));
  60.  
  61. }
  62. else if(n<nb+nc) {
  63. int xx=xKart(x0,r1,katW);
  64. int yy=yKart(y0,r1,katW);
  65. x=xx+(xx-x0)*(n-nb-nc)/nc;
  66. y=yy+(yy-y0)*(n-nb-nc)/nc;
  67. }
  68. else {
  69. double kat=Math.PI/2-Math.PI*(n-nb-na-nc)/na+Math.toRadians(alfa);
  70. x=(int)Math.round(x0+r1*Math.sin(kat));
  71. y=(int)Math.round(y0+r1*Math.cos(kat));
  72.  
  73. }
  74.  
  75. xtab[n]=x;
  76. ytab[n]=y;
  77. g.setColor(Color.GREEN);
  78. g.fillOval(x-6, y-6, 12, 12);
  79.  
  80. super.paintComponent(g);
  81.  
  82. }
  83. private int yKart(int y0, int r, double kat) {
  84. return (int)Math.round(y0+r*Math.sin(kat));
  85. }
  86.  
  87. private int xKart(int x0, int r, double kat) {
  88. return (int)Math.round(x0+r*Math.cos(kat));
  89. }
  90. }
  91. public A12(String string) {
  92. super(string);
  93. setDefaultCloseOperation(EXIT_ON_CLOSE);
  94. Toolkit kit=Toolkit.getDefaultToolkit();
  95. Dimension d=kit.getScreenSize();
  96. setBounds(d.width/4, d.height/4, d.width/2, d.height/2);
  97. add(komponent=new MyComponent());
  98. timer=new Timer(20,new ActionListener() {
  99.  
  100. @Override
  101. public void actionPerformed(ActionEvent e) {
  102. n++;
  103. if(n>=MAXN)
  104. n-=MAXN;
  105. alfa++;
  106. komponent.repaint();
  107. }
  108. });
  109. timer.start();
  110. setVisible(true);
  111. }
  112.  
  113. public static void main(String[] args) {
  114. EventQueue.invokeLater(new Runnable() {
  115.  
  116. @Override
  117. public void run() {
  118. new A12("Animek 12");
  119. }
  120. });
  121. }
  122.  
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement