Java를 사용하여 프로그램으로 Sida 그리기(PNG 생성)
너도 자신이 잘하는 프로그래밍 언어로 SIDA를 그려봐!
이어서 Java(AWT) 버전 나는 자바로 PNG를 만드는 버전을 써 보았다.
실행하면 현재 디렉터리 (현재 폴더) 에서sida입니다.png이라는 파일을 생성합니다.
(잘못이나 의견이 있다면https://twitter.com/akmiyoshi
Sida.java
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.Random;
import javax.imageio.ImageIO;
public class Sida {
static final int WIDTH = 500;
static final int HEIGHT = 500;
static final Random rnd = new Random();
static final BufferedImage buffImage = new BufferedImage(WIDTH, HEIGHT,
BufferedImage.TYPE_INT_BGR);
static final Graphics2D graphics = buffImage.createGraphics();
public static void main(String[] args) {
graphics.setBackground(Color.DARK_GRAY);
graphics.clearRect(0, 0, WIDTH, HEIGHT);
f(20, 0, 0);
try {
ImageIO.write(buffImage, "png", new File("sida.png"));
} catch (IOException e) {
e.printStackTrace();
}
}
static double W1x(double x, double y) {
return 0.836 * x + 0.044 * y;
}
static double W1y(double x, double y) {
return -0.044 * x + 0.836 * y + 0.169;
}
static double W2x(double x, double y) {
return -0.141 * x + 0.302 * y;
}
static double W2y(double x, double y) {
return 0.302 * x + 0.141 * y + 0.127;
}
static double W3x(double x, double y) {
return 0.141 * x - 0.302 * y;
}
static double W3y(double x, double y) {
return 0.302 * x + 0.141 * y + 0.169;
}
static double W4x(double x, double y) {
return 0;
}
static double W4y(double x, double y) {
return 0.175337 * y;
}
static void f(int k, double x, double y) {
if (0 < k) {
f(k - 1, W1x(x, y), W1y(x, y));
if (rnd.nextDouble() < 0.3) {
f(k - 1, W2x(x, y), W2y(x, y));
}
if (rnd.nextDouble() < 0.3) {
f(k - 1, W3x(x, y), W3y(x, y));
}
if (rnd.nextDouble() < 0.3) {
f(k - 1, W4x(x, y), W4y(x, y));
}
} else {
plot((x * WIDTH * 0.98) + (WIDTH * 0.5), HEIGHT - (y * HEIGHT * 0.98));
}
}
static void plot(double xd, double yd) {
int x = (int) xd;
int y = (int) yd;
graphics.setPaint(Color.green);
graphics.drawLine(x, y, x, y);
}
}
Reference
이 문제에 관하여(Java를 사용하여 프로그램으로 Sida 그리기(PNG 생성)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/akmiyoshi/items/27f8f3d726749f1dc717텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)