第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Mandelbrot 集的視覺(jué)表示

Mandelbrot 集的視覺(jué)表示

白板的微信 2023-02-16 15:47:26
我想使用 Java 生成 Mandelbrot 集的 PNG 照片,輸出應(yīng)該很容易在谷歌圖像搜索中找到。該集合定義為以下序列:z_n+1 = z_n^2 + c其中c和z是復(fù)數(shù),并且z始終具有小于 2 的模數(shù)。我首先為復(fù)數(shù)定義了一個(gè)類,其中還包含所需的基本復(fù)雜運(yùn)算。public class ComplexNumber {    private double real;    private double imaginary;    public ComplexNumber(double real, double imaginary) {        this.real = real;        this.imaginary = imaginary;    }    public ComplexNumber add(ComplexNumber z1, ComplexNumber z2) {        ComplexNumber sum = new ComplexNumber(0, 0);        sum.real = z1.real + z2.real;        sum.imaginary = z1.imaginary + z2.imaginary;        return sum;    }    public ComplexNumber square(ComplexNumber z) {        ComplexNumber squared = new ComplexNumber(0, 0);        squared.real = Math.pow(z.real, 2) - Math.pow(z.imaginary, 2);        squared.imaginary = 2 * z.real * z.imaginary;        return squared;    }    public double abs() {        double absolute = Math.sqrt(Math.pow(this.real, 2) + Math.pow(this.imaginary, 2));        return absolute;    }}然后我定義了 Mandelbrot 類,它獲取許多復(fù)數(shù) c(基于像素)檢查這些數(shù)字是否在使用 mandelbrot 方法的 mandelbrot 集中,并將此方法的輸出轉(zhuǎn)換為要顯示的顏色。import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;public class Mandelbrot {    public static int mandelbrot(ComplexNumber c, ComplexNumber z, int i, int n) {        if (i < n) {            if (c.abs() > 2.0) {                return i;            } else                return 0;        }        return mandelbrot(c, z.square(z).add(z, c), i, n);    }
查看完整描述

1 回答

?
慕標(biāo)琳琳

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊

看起來(lái)您的遞歸 mandelbrot 函數(shù)的終止條件不正確。

您希望 mandelbrot 函數(shù)返回,當(dāng)

  • z 的絕對(duì)值超過(guò) 2 或

  • 達(dá)到最大遞歸深度。

另外,你永遠(yuǎn)不會(huì)增加 i。

所以更新后的函數(shù)看起來(lái)像:

public static int mandelbrot(ComplexNumber c, ComplexNumber z, int i, int n) {

    if (i >= n) {

        // mandelbrot function does not diverge after n iterations.

        // Returning -1 as a magic value to indicate that the point c is in the mandelbrot set.

        // Values may already be outside of the mandelbrot set in the 0th iteration, so returning -1 makes more sense.

        return -1;

    } else if (z.abs() >= 2.0) {

        // mandelbrot function is diverging after i iterations.

        return i;

    } else {

        // recursively call mandelbrot function with an updated z and an incremented i.

        return mandelbrot(c, z.squared().add(c), i + 1, n);

    }

}

最后,如果您選擇為 mandelbrot 集中的某個(gè)點(diǎn)返回 -1,則必須更新您的顏色計(jì)算以將這些點(diǎn)設(shè)置為黑色。


int mb = mandelbrot(c, z0, 0, maxRecurse);


if (mb == -1) {

    image.setRGB(x, y, 0);

} else {

    // set the color of your image as usual

}


查看完整回答
反對(duì) 回復(fù) 2023-02-16
  • 1 回答
  • 0 關(guān)注
  • 143 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)