java 회전 매트릭스

15568 단어 2DJava
이번에 회전 행렬을 만들었다.
지난번에 배역을 사용해 원을 표시했지만 이번에는 좋지 않아 배역 자체가 더블형으로 만들어지지 않았다.
다음은 실행 중인 그림입니다.

다음은 코드입니다.
Graphics2DTest1.java

import javax.swing.*;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.geom.Line2D;

public class Graphics2DTest1 extends JPanel{
    double x = 1;
    double y = 400;

    double r = 100;
    double cx, cy;
    double rx,ry;


    double movex;
    double movey;

    double theta = 30;

  public static void main(String[] args){
    JFrame frame = new JFrame();

    Graphics2DTest1 app = new Graphics2DTest1();
    frame.setBackground(Color.BLACK); 
    frame.getContentPane().add(app);
    frame.setResizable(false);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setBounds(0, 0, 400, 400);
    frame.setTitle("タイトル");
    frame.setVisible(true);
    Insets insets = frame.getInsets();
    frame.setSize(400 + insets.left + insets.right, 400 + insets.top + insets.bottom);
  }

  public void paintComponent(Graphics g){
     Graphics2D g2 = (Graphics2D)g;
     g.setColor(Color.white);
     g.drawLine(0,200,400,200);
     g.drawLine(200,0,200,400);
     //array(g);
     //Circle(g);
     //oval(g);
     rotation(g2);
  }

  public void array(Graphics2D g){
      for(int i = 0; i <= 400; i++){
          g.draw(new Line2D.Double(x + i ,y - i,x + i,y - i));
          movex += 1;
          movey -= 1;
      }
   }


  public void Circle(Graphics2D g){
      for(int i = 0; i < 360; i++){
          cy = (int) (200 + Math.sin(i) * r);
          cx = (int) (200 + Math.cos(i) * r);
          g.draw(new Line2D.Double(cx, cy, cx, cy));
      }
  }

  public void oval(Graphics2D g){
      for(int i = 0; i < 360; i++){
          cy = (int) (200 + Math.sin(i) * r / 2);
          cx = (int) (200 + Math.cos(i) * r);
          g.draw(new Line2D.Double(cx, cy, cx, cy));
      }
  }

  public void rotation(Graphics2D g){
      g.setColor(Color.yellow);
      for(int i = 0; i < 12; i++){
          double rx = 200 + (r * Math.cos((theta * i) / 180 * Math.PI));
          double ry = 200 + (r * Math.sin((theta * i) / 180 * Math.PI));
          g.draw(new Line2D.Double(rx, ry, rx, ry));
      //g2.draw(new Line2D.Double(x, y, x, y));
          System.out.println(i + "回目");
          System.out.println("rx" + rx);
          System.out.println("ry" + ry);
      }
   }
}
환경 만들기
터미널에서 실행할 때 다음 명령을 입력하십시오.
$ javac Graphics2DTest1.java
$ java Graphics2DTest1

좋은 웹페이지 즐겨찾기