Java에서 회전 행렬을 사용하여 원 그리기
코드 내용
import javax.swing.*;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.geom.Line2D;
import java.awt.Color;
class Test2 extends JPanel{
private static final int CENTERVALUE = 300;
public static void main(String[] args){
JFrame frame = new JFrame();
Test1 app = new Test1();
frame.getContentPane().add(app);
frame.setBackground(Color.BLACK); // windowの背景色設定
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setBounds(0, 0, 600, 600);
frame.setTitle("Test");
frame.setVisible(true);
Insets insets = frame.getInsets(); // 設定すべき値を求めるためのインスタンス化
frame.setSize(600 + insets.left + insets.right,
600 + insets.top + insets.bottom); // 画面サイズ設定
}
public void paintComponent(Graphics g){
Graphics2D g2 = (Graphics2D)g;
g2.setColor(Color.blue);
g2.draw(new Line2D.Double(300, 0, 300, 600));
g2.draw(new Line2D.Double( 0, 300, 600, 300));
g2.setColor(Color.green);
drawTest1(g2);
}
public void drawTest1(Graphics2D g2){
double x, y, xx, yy, r = 200, cx = 300, cy = 300;
double[][] MathArray = new double[12][2];
for(int i = 0; i < 360; i += 30){
/* */
// x = r * Math.sin(Math.toRadians(i)) + cx;
// y = r * Math.cos(Math.toRadians(i)) + cy;
x = r * Math.cos(Radian(i));
y = r * Math.sin(Radian(i));
System.out.println(x - cx);
System.out.println(y - cy);
g2.draw(new Line2D.Double(x + cx, cy - y, cx + x, cy - y));
}
}
public double Radian(double angle){
angle = angle / 180 * 3.141592653589793;//Math.PI;
return angle;
}
}
개발 환경Mac Version 10.10.5, Eclipse Mars
Eclipse import을 사용하여 수행하십시오.터미널에서 실행할 때
javac Test2.java
java Test2
나는 라디안 변환을 해야 한다는 생각이 들지 않아 고전했다...
Reference
이 문제에 관하여(Java에서 회전 행렬을 사용하여 원 그리기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/inomasa/items/b68ad873d52075541b5b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)