毛毛狗

毛毛狗

0个粉丝

22

问答

3

专栏

20

资料

毛毛狗  发布于  2020-12-06 23:11:32
采纳率 0%
22个问答
3293

这是一个“利用递归绘画分形图案”的代码

 

这是一个“利用递归绘画分形图案”的代码,但是怎么写才能把它画出来呢?

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



       }

}
我来回答
回答0个
时间排序
认可量排序
易百纳技术社区暂无数据
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区