Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 400dcc3

Browse files
Chapter 09 completed.
1 parent 39d6a9e commit 400dcc3

File tree

29 files changed

+75
-84
lines changed

29 files changed

+75
-84
lines changed

‎09-Fractal-Drawing/07-Snowflake-Fractal/src/AlgoFrame.java‎ renamed to ‎09-Fractal-Drawing/08-Snowflake-Fractal/src/AlgoFrame.java‎

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
import java.awt.Graphics2D;
2-
import java.awt.Graphics;
3-
import java.awt.Dimension;
4-
import java.awt.Color;
5-
import java.awt.RenderingHints;
1+
import java.awt.*;
62
import javax.swing.*;
73

84
public class AlgoFrame extends JFrame{
@@ -93,8 +89,8 @@ private void drawFractal(Graphics2D g, double x1, double y1, double side, double
9389
double y4 = y3 - side_3 * Math.sin((angle-60.0)*Math.PI/180.0);
9490
drawFractal(g, x3, y3, side_3, angle-60.0, depth+1);
9591

96-
double x5 = x4 + side_3 * Math.cos(angle*Math.PI/180.0);
97-
double y5 = y4 - side_3 * Math.sin(angle*Math.PI/180.0);
92+
// double x5 = x4 + side_3 * Math.cos(angle*Math.PI/180.0);
93+
// double y5 = y4 - side_3 * Math.sin(angle*Math.PI/180.0);
9894
drawFractal(g, x4, y4, side_3, angle, depth+1);
9995

10096
return;
File renamed without changes.
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ public class AlgoVisualizer {
1111
public AlgoVisualizer(int depth, int side){
1212

1313
data = new FractalData(depth);
14-
int sceneWidth = 3*side+3;
15-
int sceneHeight = side;
14+
int sceneWidth = side;
15+
int sceneHeight = side/3;
1616

1717
EventQueue.invokeLater(() -> {
1818
frame = new AlgoFrame("Fractal Visualizer", sceneWidth,sceneHeight);
@@ -54,7 +54,7 @@ public void keyReleased(KeyEvent event){
5454
public static void main(String[] args) {
5555

5656
int depth = 6;
57-
int side = 300;
57+
int side = 900;
5858

5959
AlgoVisualizer vis = new AlgoVisualizer(depth, side);
6060
}
File renamed without changes.
Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,29 +63,30 @@ public void paintComponent(Graphics g) {
6363
g2d.addRenderingHints(hints);
6464

6565
// 具体绘制
66-
drawFractal(g2d, canvasWidth/2, canvasHeight, canvasHeight/2, 0, 0);
66+
drawFractal(g2d, canvasWidth/2, canvasHeight, canvasHeight, 0, 0);
6767
}
6868

6969
private void drawFractal(Graphics2D g, double x1, double y1, double side, double angle, int depth){
7070

71-
if(side <= 0)
71+
double side_2 = side / 2;
72+
73+
if(side_2 <= 0)
7274
return;
7375

7476
if( depth == data.depth ){
75-
double x2 = x1 - side * 2 * Math.sin(angle*Math.PI/180.0);
76-
double y2 = y1 - side * 2 * Math.cos(angle*Math.PI/180.0);
77+
double x2 = x1 - side * Math.sin(angle*Math.PI/180.0);
78+
double y2 = y1 - side * Math.cos(angle*Math.PI/180.0);
7779
AlgoVisHelper.setColor(g, AlgoVisHelper.Indigo);
7880
AlgoVisHelper.drawLine(g, x1, y1, x2, y2);
7981
return;
8082
}
8183

82-
double x2 = x1 - side * Math.sin(angle*Math.PI/180.0);
83-
double y2 = y1 - side * Math.cos(angle*Math.PI/180.0);
84+
double x2 = x1 - side_2 * Math.sin(angle*Math.PI/180.0);
85+
double y2 = y1 - side_2 * Math.cos(angle*Math.PI/180.0);
8486
AlgoVisHelper.setColor(g, AlgoVisHelper.Indigo);
8587
AlgoVisHelper.drawLine(g, x1, y1, x2, y2);
8688

8789
drawFractal(g, x2, y2, side/2, angle+data.splitAngle/2, depth+1);
88-
8990
drawFractal(g, x2, y2, side/2, angle-data.splitAngle/2, depth+1);
9091

9192
return;
File renamed without changes.
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ public class AlgoVisualizer {
88
private FractalData data;
99
private AlgoFrame frame;
1010

11-
public AlgoVisualizer(int sceneWidth, int sceneHeight, int depth, double splitAngle){
11+
public AlgoVisualizer(int sceneWidth, int sceneHeight, int maxDepth, double splitAngle){
1212

13-
data = new FractalData(depth, splitAngle);
13+
data = new FractalData(maxDepth, splitAngle);
1414

1515
EventQueue.invokeLater(() -> {
1616
frame = new AlgoFrame("Fractal Visualizer", sceneWidth,sceneHeight);
@@ -51,11 +51,11 @@ public void keyReleased(KeyEvent event){
5151

5252
public static void main(String[] args) {
5353

54-
int depth = 6;
54+
int maxDepth = 6;
5555
double splitAngle = 60.0;
5656
int sceneWidth = 800;
5757
int sceneHeight = 800;
5858

59-
AlgoVisualizer vis = new AlgoVisualizer(sceneWidth, sceneHeight, depth, splitAngle);
59+
AlgoVisualizer vis = new AlgoVisualizer(sceneWidth, sceneHeight, maxDepth, splitAngle);
6060
}
6161
}
File renamed without changes.
-15.4 KB
Binary file not shown.
File renamed without changes.

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /