我是Java编程的新手,最近我决定为学校的论文选择分形的主题.然而,写我的文章的第一步要求我使用Java代码重新创建Barnsley蕨类植物.当我尝试这个时,与我在网上看到的其他蕨类植物相比,我的巴恩斯利蕨看起来太瘦了.我检查了维基百科,以确保我的仿射变换的数量和概率是正确的,但是产生了相同的,瘦的蕨类植物.有人能帮我吗?我最近进入了BufferedImage的领域,听说这是渲染像素的更好方法,但我仍然不确定它是如何工作的.绘画的图形风格是不可靠的还是什么?这是我的代码:
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Canvas;
public class Fern extends Canvas{
private static final long serialVersionUID = 1L;
public static final int ITERATION = 100000;
public Fern() {
setBackground(Color.WHITE);
}
public void paint(Graphics window)
{
double x = .5;
double y = 0;
window.setColor(Color.GREEN);
window.drawRect(200,600,1,1);
Color color;
for(int i = 0; i<ITERATION; i++){
double chance = (Math.random());
if(chance<.85){
x=.85*x+.04*y; //x=.85*x+.04*y;
y=-.04*x+.85*y+1.6; //y=-.04*x+.85*y+1.6;
color = new Color(Color.GREEN.getRGB());
}
else if(chance<.86){
x=0; //x=0;
y=.16*y; //y=.16*y;
color = new Color(Color.BLUE.getRGB());
}
else …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用canvas,我正在尝试修改这段代码,但不幸的是我不理解它的某些部分.
我的问题是 - 如何自定义上面的代码,例如通过
f(z) = c^e(-z)
Run Code Online (Sandbox Code Playgroud)
(该公式取自一本带有分形示例的书)?
我知道我需要更改这部分代码:
function computeRow(task) {
var iter = 0;
var c_i = task.i;
var max_iter = task.max_iter;
var escape = task.escape * task.escape;
task.values = [];
for (var i = 0; i < task.width; i++) {
var c_r = task.r_min + (task.r_max - task.r_min) * i / task.width;
var z_r = 0, z_i = 0;
for (iter = 0; z_r*z_r + z_i*z_i < escape && iter < max_iter; iter++) {
// …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建我的第一个分形(毕达哥拉斯树):
替代文字 http://img13.imageshack.us/img13/926/lab6e.jpg
在 Java 中使用 Graphics2D。这是我现在所拥有的:
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int i=0;
Scanner scanner = new Scanner(System.in);
System.out.println("Give amount of steps: ");
i = scanner.nextInt();
new Pitagoras(i);
}
}
class Pitagoras extends JFrame {
private int powt, counter;
public Pitagoras(int i) {
super("Pythagoras Tree.");
setSize(1000, 1000);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
powt = i;
}
private void paintIt(Graphics2D g) {
double p1=450, p2=800, size=200;
for (int i = …Run Code Online (Sandbox Code Playgroud) 我被要求实现一个递归函数,它以非负整数n作为输入并返回用字母L,R和F编码的turtle指令,其中L表示向左旋转45度,R表示向右旋转45度,F表示向前旋转.
附加信息我有:对于每个非负整数n> 0,Levy曲线L(n)可以用Levy曲线定义L(n-1); Levy曲线L(0)只是一条直线.
usage:
>>> lev(0)
'F'
>>> lev(1)
'LFRRFL'
Run Code Online (Sandbox Code Playgroud)
我对此很新,我不知道如何开始:
到目前为止我只得到:
from turtle import Screen, Turtle
def lev(n):
# base case
if n ==0:
return 'F'
# recursive case
else:
return lev(n-1)
Run Code Online (Sandbox Code Playgroud)
我在这里需要一些好的指示.
我想在Python或C中使用递归函数生成Cantor三元集,但我不知道如何做到这一点.更确切地说,我希望在N递归之后,Python返回类似于列表的内容,该列表包含组成Cantor集的子集的开头和结尾.
fractals ×6
canvas ×2
graphics ×2
java ×2
python ×2
c ×1
figures ×1
javascript ×1
jframe ×1
mandelbrot ×1
pseudocode ×1