这是一个“利用递归绘画分形图案”的代码
这是一个“利用递归绘画分形图案”的代码,但是怎么写才能把它画出来呢?
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class mouse implements MouseListener {
// int[][] points = new int[3][2];
int[][] points = new int[2][2];
int temp = 0;
double arg = Math.PI / 3;
int length = 15;
Graphics g;
public void setGraphics(Graphics g) {
this.g = g;
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
points[temp][0] = e.getX();
points[temp][1] = e.getY();
temp++;
if (temp == 2) {
int x1 = points[0][0];
int y1 = points[0][1];
int x2 = points[1][0];
int y2 = points[1][1];
draw(x1, y1, x2, y2, length);
temp %= 2;
}
}
public void draw(int x1, int y1, int x3, int y3, int num) {
int x4 = (x1 + y1 + x3 - y3) / 2;
int y4 = (-x1 + y1 + x3 + y3) / 2;
int x2 = (x1 - y1 + x3 + y3) / 2;
int y2 = (x1 + y1 - x3 + y3) / 2;
g.drawLine(x1, y1, x2, y2);
g.drawLine(x2, y2, x3, y3);
g.drawLine(x3, y3, x4, y4);
g.drawLine(x4, y4, x1, y1);
num--;
if (num <= 0)
return;
double r = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)) / 2;
int x = (int) ((x1 * (1 / Math.tan(Math.PI / 2 - arg)) + x2 * (1 / Math.tan(arg)) + y2 - y1)
/ ((1 / Math.tan(arg)) + (1 / Math.tan(Math.PI / 2 - arg))));
int y = (int) ((y1 * (1 / Math.tan(Math.PI / 2 - arg)) + y2 * (1 / Math.tan(arg)) + x1 - x2)
/ ((1 / Math.tan(arg)) + (1 / Math.tan(Math.PI / 2 - arg))));
int tx1 = x1 - y1 + y;
int ty1 = x1 + y1 - x;
int tx2 = x - y + y2;
int ty2 = x + y - x2;
draw(tx1, ty1, x, y, num);
draw(tx2, ty2, x2, y2, num);
}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
}
相似问题
-
学习c/c++好还是java好?
回答 1 浏览 2307 -
鸿蒙操作系统源码
回答 6 浏览 789 -
mysql是不是没有decode函数呀
回答 17 浏览 294 -
服务器需要安装什么软件。maven必须装吗?
回答 7 浏览 291 -
springboot项目有人有部署经验吗
回答 3 浏览 269 -
小程序客服怎么样打开自动发送消息啊,这个有开发文档的吗
回答 0 浏览 166
最新问题
-
鑫胜百盛集团0002345.com
回答 0 浏览 1 -
鑫胜0002345.com
回答 0 浏览 3 -
鑫胜客服0002345.com
回答 0 浏览 1 -
鑫胜官网0002345.com
回答 0 浏览 3 -
鑫百利二维码0002345.com
回答 0 浏览 3 -
澳门鑫百利国际上分0002345.com
回答 0 浏览 4
自媒体

海思讨论群

Opencv双目视觉
联系我们

