/ /他の正方形の中心の内側に正方形を描いて回転させるには? - java、swing、ユーザインタフェース、グラフィック、graphics2d

どのように他の正方形の中心の内側に四角形を描画し、回転させるのですか? - Java、スイング、ユーザインタフェース、グラフィックス、graphics2d

正方形を他の正方形の内側に描く必要がありますが、正方形を中心に回転させて小さくする方法がわかりません。 これは最後にどのように見えるべきかについての写真です:

ここに画像の説明を入力

今私は円を作る正方形を描くいくつかのコードを持っています。

class MySquare  extends JComponent {
public void paint(Graphics g) {

Graphics2D g2d = (Graphics2D) g;
for (int i = 0; i < 20; i++) {

g2d = (Graphics2D) g.create();
g2d.rotate(Math.toRadians(45 - (i * 10)), 100, 100);

// Difrent colors:
if (i % 2 == 0)
g2d.setColor(Color.black);
else
g2d.setColor(Color.green);
g2d.fillRect(50, 50, 100, 100);

}
}
}

public class DrawRect {
public static void main(String[] a) {
JFrame window = new JFrame();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setBounds(30, 30, 800, 800);
window.getContentPane().add(new MySquare());
window.setVisible(true);
}
}

回答:

回答№1の場合は7

あなたは最初に原点の周りにあなたの図を描くことができ(それは簡単です)、それから翻訳することができます:

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Test {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(400, 400);
frame.setVisible(true);

frame.add(new JPanel() {

@Override
protected void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;

double alpha = Math.toRadians(5);
double factor = 1 / (Math.sin(alpha) + Math.cos(alpha));
double size = 200;

g2d.translate(size, size);

for (int i = 0; i < 20; i++) {
g2d.setColor(i % 2 == 0 ? Color.black : Color.green);

int intSize = (int) Math.round(size);

g2d.fillRect(-intSize / 2, -intSize / 2, intSize, intSize);

size = size * factor;

g2d.rotate(alpha);
}
}
});
}
}

スクリーンショット