Fractal Tree

尝试使用递归方式实现一棵简单的分形树,给出初始点的坐标,在此基础上根据坐标轴旋转的规则计算出子树干与根节点的坐标关系,依次递归画出左子树干和右子树干,并提供一个递归的深度用于控制画的子树的数目。

在二维坐标系中,坐标轴旋转的公式如下:

In two dimensions, every rotation matrix has the following form,

This rotates column vectors by means of the following matrix multiplication,

So the coordinates (x‘,y‘) of the point (x,y) after rotation are

参考资料见维基百科旋转矩阵:http://en.wikipedia.org/wiki/Rotation_matrix

将这个分形树的实现添加到之前的绘图框架中,只需要增加一个Tree1类,然后再FractalPanel中调用此类的draw方法即可,并且在FractalMain类中添加相关的Button操作。Tree1类的实现如下:

package com.elvalad;

import java.awt.*;

/**
 * Created by elvalad on 2015/1/4.
 */
public class Tree1 {
    private double x;
    private double y;
    private double alpha;
    private int depth;
    private Color color = new Color(43, 77, 219);

    public Tree1(double x, double y, double alpha, int depth, Color color) {
        this.x = x;
        this.y = y;
        this.alpha = alpha;
        this.depth = depth;
        this.color = color;
    }

    public void draw(Graphics g) {
        g.setColor(this.color);
        this.drawShape(g, this.x, this.y, this.alpha, this.depth);
    }

    private void drawShape(Graphics g, double x1, double y1, double angle, double depth) {
        if (depth == 0) {
        } else {
            double x2 = x1 + Math.cos(Math.toRadians(angle)) * depth * 15.0;
            double y2 = y1 + Math.sin(Math.toRadians(angle)) * depth * 15.0;

            Graphics2D g2d = (Graphics2D) g;
            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,     RenderingHints.VALUE_ANTIALIAS_ON);
            g2d.setStroke(new BasicStroke((float) (0.5f * depth)));
            g.drawLine((int)x1, (int)y1, (int)x2, (int)y2);

            drawShape(g, x2, y2, angle + 25, depth - 1);
            drawShape(g, x2, y2, angle - 25, depth - 1);
        }
    }
}

时间: 2024-08-05 12:54:12

Fractal Tree的相关文章

分形树Fractal tree介绍——具体如何结合TokuDB还没有太懂,先记住其和LSM都是一样的适合写密集

在目前的Mysql数据库中,使用最广泛的是innodb存储引擎.innodb确实是个很不错的存储引擎,就连高性能Mysql里都说了,如果不是有什么很特别的要求,innodb就是最好的选择.当然,这偏文章讲的是TokuDB,不是innodb,相比innodb,TokuDB有着自己的特点. 转自:http://www.kryptosx.info/archives/931.html BTree和Fractal tree的比较: 目前无论是SQL Server,还是MySQL的innodb,都是用的B+

绘图框架新需求

最近都是在这个绘图框架上进行迭代,主要是增加一些分形的绘图算法,在实现Fractal Tree时发现这个框架已经不能满足我的需求了,因为每当我需要调整一些参数,例如分形树的角度,长度,迭代次数等参数时都需要重新修改编译代码,很不方便.所以最近需要给这个框架增加新的功能,要求每运行一个绘图算法时要根据这个分形图案的实际情况加入算法参数设置,颜色设置等功能,另外一个需求是要给这个框架添加异常处理.

单表60亿记录等大数据场景的MySQL优化和运维之道

此文是根据杨尚刚在[QCON高可用架构群]中,针对MySQL在单表海量记录等场景下,业界广泛关注的MySQL问题的经验分享整理而成,转发请注明出处. 杨尚刚,美图公司数据库高级DBA,负责美图后端数据存储平台建设和架构设计.前新浪高级数据库工程师,负责新浪微博核心数据库架构改造优化,以及数据库相关的服务器存储选型设计. 前言 MySQL数据库大家应该都很熟悉,而且随着前几年的阿里的去IOE,MySQL逐渐引起更多人的重视. MySQL历史 1979年,Monty Widenius写了最初的版本,

单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构(转)

转自http://www.php1.cn/Content/DanBiao_60_YiJiLuDengDaShuJuChangJingDe_MySQL_YouHuaHeYunWeiZhiDao_%7C_GaoKeYongJiaGou.html, 更多详细资料请参看原文 此文是根据杨尚刚在[QCON高可用架构群]中,针对MySQL在单表海量记录等场景下,业界广泛关注的MySQL问题的经验分享整理而成,转发请注明出处. 杨尚刚,美图公司数据库高级DBA,负责美图后端数据存储平台建设和架构设计.前新浪高

高性能MySql阅读笔记第五章--创建高性能的索引1

创建高性能的索引1 索引是存储引擎用于快速找到记录的一种数据结构,这是索引的基本功能. 索引对于良好的性能非常重要. 索引优化应该是对查询性能优化最有效的手段了,索引能够轻易将查询性能提高几个数量级,“最优”的索引有时比一个“好的”索引性能好两个数量级,创建一个真正“最优”的索引经常需要重写查询. 一.索引的类型 1.B树索引 当人们谈论索引的时候,如果没有特别指明类型,那么多半说的是B树索引,他使用B树数据结构存储数据. 可以使用B树索引的查询类型:全值匹配.匹配最左前缀.匹配列前缀.匹配范围

TokuDB安装

一:缘由 监控系统产生的数据相对普通业务数据,具有写入需求占绝对多数,读取相对较少的特点. 之前使用的PMM监控系统,其docker版解决方案,内置的不仅不是其自家的percona分支数据库,而且使用的是较旧的5.5官方分支版本.监控了6个实例的库和主机后.3周后就占用了9GB的空间. 欣慰的是,Percona公司考虑到这个情况,将会自动根据PMM服务器的硬盘可用容量大小自动定期删除备份的历史数据. 对一个DBA而言,需要关注到一个库的历史负载情况,方便同比环比进行硬件扩容规划.最起码要2年的完

数据库开发规范

数据库开发规范 数据库开发规范定义:开发规范是针对内部开发的一系列建议或规则. 开发规范本身也包含几部分:基本命名和约束规范,字段设计规范,索引规范,使用规范. 规范存在意义 保证线上数据库schema规范 减少出问题概率 方便自动化管理 规范需要长期坚持,对开发和DBA是一个双赢的事情 想想没有开发规范,有的开发写出各种全表扫描的SQL语句或者各种奇葩SQL语句,我们之前就看过开发写的SQL 可以打印出好几页纸.这种造成业务本身不稳定,也会让DBA天天忙于各种救火. 基本命名和约束规范 表字符

Tokumx vs Mongodb

Mongodb是一个文档型nosql数据库 採用C++编写 Mongo DB最大的优势在于全部的数据持久操作都无需开发者手动编写SQL语句,直接调用方法就能够轻松的实现CRUD操作. 非常多人觉得mongodb不支持事务.事实上严格上说,mongodb不是一个全然事务型的数据库,他的有一些操作是事务过程的. 这里我想推举的另外一款和mongo非常类似的数据库是tokumx,他是tokuek的开源版本号.能够说他有像mongo一样的nosql特性,也有关系型数据库的事务特性,支持document级

[转载] 单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构

原文: http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=209406532&idx=1&sn=2e9b0cc02bdd4a02f7fd81fb2a7d78e3&scene=1&key=0acd51d81cb052bce4ec2a825666e97fe7d6e1072fb7d813361771645e9403309eb1af025691162c663b60ea990c3781&ascene=0&