从星期六开班之后,我就正式成为蓝杰1024组成员,在这个组有我们两个可爱的同班同学,还有许多来自邻校的同学们,意外的是在开班的自我介绍的过程中我找到了一个老乡,哈哈哈。我们交流甚欢,还交流各自的学习与生活状况,最近虽然很忙碌,但是有各位的相伴,过程还是相当快乐的,我也坚信自己的选择是正确的。
这几次给我们上课的是胡zong,但是他叫我们喊他胡哥,虽然跟小龟他们叫的不一样有点不太自然,但是慢慢的就会习惯的。胡哥的上课方式我很喜欢啊,有种很清醒的感觉,不像是被牵着走的,而自己才是真正的主人。
这几天学的是分形基础,跟我们班两个活宝搭档的感觉不错,代同学代码基础是相当了得,哈哈,他敲代码出结果那是相当快的,我会好好学习,努力赶上他的,哈哈。曹芳同学是活宝,一直都是啊,以后也要更加努力了,为了那天开会时自己说的生活。
一、
1.第一次,我们打出了一个包含好多三角形的图形,出结果很快,贴代码:
import java.awt.Graphics;
import javax.swing.JFrame;
public class DrawTes {
//定义一个init方法
public void init(){
JFrame jf=new JFrame();
jf.setSize(600,600);
jf.setLocationRelativeTo(null);
jf.setVisible(true);
Graphics g=jf.getGraphics();
//实例化一个事件处理对象
MouTest mt=new MouTest(g);
//将事件处理对象加入到窗体中
jf.addMouseListener(mt);
}
public static void main(String[] args) {
//实例化一个JFrame窗口
DrawTes dr=new DrawTes();
dr.init();
}
}
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Random;
public class MouTest implements MouseListener{
Graphics g;
public MouTest(Graphics g){
this.g=g;
}
public void mouseClicked(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
int x1,y1,x2,y2,x3,y3,x4,y4,t;
Random ran=new Random();
x1=ran.nextInt(500);y1=ran.nextInt(500);
x2=ran.nextInt(500);y2=ran.nextInt(500);
x3=ran.nextInt(500);y3=ran.nextInt(500);
x4=ran.nextInt(500);y4=ran.nextInt(500);//p
g.drawLine(x1, y1, x1, y1);
g.drawLine(x2, y2, x2, y2);
g.drawLine(x3, y3, x3, y3);
g.drawLine(x4, y4, x4, y4);
for(int i=0;i<1000;i++){
t=ran.nextInt(3)+1;
if(t==1){
g.drawLine((x1+x4)/2, (y1+y4)/2, (x1+x4)/2, (y1+y4)/2);
x4=(x1+x4)/2;y4=(y1+y4)/2;
}
if(t==2){
g.drawLine((x2+x4)/2, (y2+y4)/2, (x2+x4)/2, (y2+y4)/2);
x4=(x2+x4)/2;y4=(y2+y4)/2;
}
if(t==3){
g.drawLine((x3+x4)/2, (y3+y4)/2, (x3+x4)/2, (y3+y4)/2);
x4=(x3+x4)/2;y4=(y3+y4)/2;
}
}
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
}
这之中只要学到的是随机数的应用,
实例化一个Random对象
Random ran=new Random();
调用nextInt()方法
int t=ran.nextInt(3);//随机从0,1,2中返回一个整数给t
2.其中胡哥给我们复习了一下添加监听器的方法
在窗体JFrame对象中必须得到一个画布对象才能在窗体中画图
Graphics g=jf.getGraphics();
实例化一个监听器对象,将画布传到监听器类中,同时给事件添加一个监听器方法
代码:
Graphics g=jf.getGraphics();
//实例化一个事件处理对象
MouTest mt=new MouTest(g);
//将事件处理对象加入到窗体中
jf.addMouseListener(mt);
从中想到胡哥今天给我们讲的传参的问题
(1)直接传递属性 public修饰符
(2)构造器传参 对于一个对象只能调用一次,也就是在实例化的该对象时
(3)一般函数传参 对于一个对象可以调用多次
打印得到的图形
二、
之后打印很多有趣的图形,之前跟小代子合作弄出了好多错误,发现自己还是很多地方很是粗心啊
贴代码:
package cn0324;
import java.awt.Graphics;
import javax.swing.JFrame;
public class DrawT {
public void init(){
JFrame jf=new JFrame();
jf.setSize(1000, 1000);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(3);
jf.setVisible(true);
Graphics g=jf.getGraphics();
Mout mou=new Mout(g);
jf.addMouseListener(mou);
}
public static void main(String args[]){
DrawT dr=new DrawT();
dr.init();
}
}
package cn0324;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class Mout implements MouseListener {
private Graphics g;
public Mout(Graphics g){
this.g=g;
}
public void mouseClicked(MouseEvent e) {
// double a=1.5f,b=-1.8f,c=1.6f,d=0.9f;
// double x=0,y=0;
// int x1=0,y1=0;
// for(int i=0;i<1000000;i++){
// g.drawLine(x1, y1, x1, y1);
//
// x=Math.sin(a*y)+c*(Math.cos(a*x));
// y=Math.sin(b*x)+d*(Math.cos(b*y));
// x1=(int)Math.abs((x*100))+300;
// y1=(int)Math.abs((y*100))+300;
// System.out.println("x1 = "+x1+"y1 ="+y1);
//
// }
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
draw3();
}
public void draw1(){
double a=1.5f,b=-1.8f,c=1.6f,d=0.9f;
double x=0,y=0,x2;
int x1=0,y1=0;
for(int i=0;i<100000;i++){
g.drawLine(x1, y1, x1, y1);
x2=x;
x=Math.sin(a*y)+c*(Math.cos(a*x));
y=Math.sin(b*x2)+d*(Math.cos(b*y));
x1=(int)(x*100)+300;
y1=(int)(y*100)+300;
//System.out.println("x1 = "+x1+"y1 ="+y1);
}
}
public void draw2(){
double a=1.7f,b=1.7f,c=0.06f,d=1.2f;
double x=0,y=0,x2;
int x1=0,y1=0;
for(int i=0;i<100000;i++){
g.drawLine(x1, y1, x1, y1);
x2=x;
x=Math.sin(a*y)+c*(Math.cos(a*x));
y=Math.sin(b*x2)+d*(Math.cos(b*y));
x1=(int)(x*100)+300;
y1=(int)(y*100)+300;
//System.out.println("x1 = "+x1+"y1 ="+y1);
}
}
public void draw3(){
double a=1.4f,b=1.5f,c=1.40f,d=-6.56f;
double x=0,y=0,x2,y2;
int x1=0,y1=0;
for(int i=0;i<100000;i++){
g.drawLine(x1, y1, x1, y1);
x2=x;
y2=y;
x=d*(Math.sin(a*x2))-(Math.sin(b*y2));
y=c*(Math.sin(b*x2))+Math.cos(b*y2);
x1=(int)(x*40)+300;
y1=(int)(y*40)+300;
//System.out.println("x1 = "+x1+"y1 ="+y1);
}
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
}
主要的错误是:
1.那个参与计算的应该是double类型的,而且不应该放大倍数,打印该点时才放大该点的坐标
2. x=Math.sin(a*y)+c*(Math.cos(a*x));
y=Math.sin(b*x)+d*(Math.cos(b*y));//错误的原因是x的只改变了之后还代入到y的计算中,坑了自己啊,改成y=Math.sin(b*x2)+d*(Math.cos(b*y));
x1=(int)(x*100)+300;
y1=(int)(y*100)+300;
打印的图形:
- 大小: 18.6 KB
- 大小: 144.8 KB
- 大小: 57.6 KB
- 大小: 74.3 KB
分享到:
相关推荐
多重分形分析是一种复杂的数据分析方法,主要用于研究具有非线性、非高斯特性和尺度不变性的信号或图像。在标题“多重分形,多重分形谱,matlab”中,我们可以看出本主题关注的是使用MATLAB进行多重分形谱的计算。...
《Higuchi算法在声发射分形维数计算中的应用》 分形,这一概念源自数学,是指在不同尺度上具有相同或相似结构的几何形态,它揭示了自然界中复杂结构的内在规律。Higuchi算法是计算一维时间序列分形维数的一种有效...
分形,这个概念源于20世纪70年代,由数学家曼德勃罗提出,它是一种具有自相似性、无标度性和复杂性的几何形态。本分形基础课件是为初学者精心设计的,旨在深入浅出地介绍分形理论,帮助学习者建立起对分形的全面认识...
分形几何是一种在数学、计算机科学以及艺术领域中广泛应用的理论,它研究的是那些具有自相似性质的复杂形状。在MATLAB中,分形可以通过编程实现,为科学家和工程师提供了强大的工具来模拟自然现象和进行数据可视化。...
分形,源自希腊语“fraktal”,是一个数学概念,由数学家曼德勃罗(Benoit Mandelbrot)在20世纪70年代提出。它描述了一种具有自相似性的几何形状,无论在宏观还是微观层面上,都呈现出相同的结构模式。这种无限重复...
多重分形是数学和物理领域中的一个重要概念,它在复杂系统的研究中扮演着核心角色。多重分形理论扩展了单一分形维度的概念,允许我们更深入地理解和描述那些具有多种尺度特征的复杂对象。在本压缩包中,包含了用于...
分形艺术与理论:探索复杂之美 在数学与艺术交汇的奇妙领域中,分形艺术以其独特的魅力吸引了无数研究者和艺术家的目光。分形,这一概念由数学家本华·曼德博在20世纪70年代提出,揭示了自然界中普遍存在的自相似性...
分形维数是一种用于描述复杂几何形状或结构的数学概念,尤其在图像处理和计算机科学领域有着广泛的应用。本主题将深入探讨如何使用MATLAB来计算分形维数,特别是针对二值图像的情况。 首先,我们需要理解什么是分形...
分形几何是一种在自然界中广泛存在的数学概念,它具有自相似性和无穷细节的特性。分形树是分形几何中的一个经典例子,模拟了自然界中树木的形态。在这个项目中,我们将探讨如何通过编程实现分形树的生成,以及相关的...
分形,一种自然界中普遍存在的几何形态,以其复杂的自相似性与无穷的细节吸引着科学家和艺术家的目光。在计算机科学领域,分形理论被广泛应用于图像处理、图形生成、数据压缩等多个方面。本资料包中包含了丰富的分形...
分形插值是一种在计算机科学和数学领域中用于数据拟合和插值的高级技术,特别是在处理不规则或复杂的数据集时。它基于分形理论,即利用分形几何的特性来构建连续函数,使该函数能够精确地通过离散的数据点。在MATLAB...
在Python编程语言中,我们可以利用turtle模块来创建各种图形,包括复杂的艺术作品,如分形树。分形是一种自相似的几何形状,在自然界中广泛存在,比如树叶、山脉和云朵。分形树就是一种利用分形理论绘制的树形图案,...
在MATLAB中,分形维数的计算是数学与计算机科学的一个重要领域,特别是在图像处理、几何形态学和复杂系统的研究中。分形维数是一种描述不规则形状复杂性的度量,它超越了传统的欧几里得几何维度,能够更好地刻画现实...
本文将详细探讨"fractral.zip"压缩包中的核心知识点,包括分形计算公式、MATLAB在分形计算中的应用、分形维度以及图像分形维数的计算。 首先,分形计算公式是理解分形理论的基础。分形具有自相似性,即在不同尺度上...
分形插值的matlab程序-分形插值曲面的MATLAB程序.pdf 传统的插值方法, 在相邻的两个信息点之间只能插出直线或者光滑曲线, 而分形插值运用自仿射原 理, 在两个信息点之间可以得到各种波状起伏的折线, 这对于模拟...
分形理论的基本内容包括分形几何、分形维数、分形图形的生成、分形生长模型与模拟、分形插值与模拟、随机分形以及与分形密不可分的混沌理论。分形几何主要是研究分形图形的基本概念和性质。分形维数是用来描述分形...
### 分形图形学中的随机分形课件 #### 分形图形学概述 分形图形学是一门研究自然界中复杂形状和结构的学科,通过数学工具和技术来理解和模拟这些形状。分形图形的一个重要特征是其自相似性,即在不同尺度上具有...
### 分形几何——数学基础及其应用 #### 一、引言 分形几何是一门研究不规则几何形状的数学分支,这些形状具有自相似性、分数维数等特性。本书《分形几何——数学基础及其应用》(第二版)由英国数学家Kenneth ...
在这个主题中,我们将探讨如何使用OpenGL来实现分形树。分形树是一种基于数学规则的自相似图形,它通过递归过程生成,具有高度的细节和复杂性。这种图形在计算机图形学中经常被用来创建逼真的自然环境。 首先,我们...