日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

分形与数据结构第二篇

發(fā)布時(shí)間:2025/3/8 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分形与数据结构第二篇 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、分形之 迭代實(shí)現(xiàn)分形

? ?本次的圖形都是在之前的畫(huà)圖工具中實(shí)現(xiàn)的。

? 首先,還是和原來(lái)一樣建立一個(gè)JButton元素組件,然后加上監(jiān)聽(tīng)方法;再在public void mouseClicked(MouseEvent e) {}方法中實(shí)現(xiàn)圖形;

else if (s.equals("圖形2")) {double x1 = 0, y1 = 0, x2 = 0, y2 = 0;double a = -2, b = -2, c = -1.2, d = 2;for (int n = 0; n <= 50000; n++) {g1.setColor(Color.green);g1.setStroke(C);/** 先算出值,然后再來(lái)畫(huà)圖; 畫(huà)圖時(shí)要注意,因?yàn)榍蟪龅闹岛苄?#xff0c;所以需要擴(kuò)大。* 而強(qiáng)制轉(zhuǎn)型時(shí)應(yīng)該是求出的值整體轉(zhuǎn)也就是應(yīng)該加上括號(hào)(x2 * 100 + 350), int m = (int)x2 ** 100 + 350 ,不加括號(hào)時(shí)是,X2轉(zhuǎn)型之后,再乘以100,加上350,*/x2 = (Math.sin(a * y1) - Math.cos(b * x1));y2 = (Math.sin(c * x1) - Math.cos(d * y1));// int m = (int) (x2 * 100 + 350);(x2 * 100 + 350)整體強(qiáng)制轉(zhuǎn)型;// int s = (int) (y2 * 100 + 350);這時(shí)是X2乘以100加上350得到的數(shù)再進(jìn)行轉(zhuǎn)型// g.drawLine(m, s, m, s);g1.drawLine((int) (x2 * 100 + 300), (int) (y2 * 100 + 300), (int) (x2 * 100 + 300),(int) (y2 * 100 + 300));// 強(qiáng)制轉(zhuǎn)型時(shí),要注意加上括號(hào),整體轉(zhuǎn)型x1 = x2;y1 = y2;}

結(jié)果:

?

圖形3:

else if (s.equals("圖形3")) {g1.setColor(Color.MAGENTA);g1.setStroke(C);double x1 = 0, y1 = 0, x2 = 0, y2 = 0;double a = 1.40, b = 1.56, c = 1.40, d = -6.56;for (int n = 0; n <= 60000; n++) {x2 = d * Math.sin(a * x1) - Math.sin(b * y1);y2 = c * Math.cos(a * x1) + Math.cos(b * y1);g1.drawLine((int) (x2 * 50 + 550), (int) (y2 * 50 + 300), (int) (x2 * 50 + 550), (int) (y2 * 50 + 300));// 乘以的數(shù),控制大小,整體相加改變位置;x1 = x2;y1 = y2;}

結(jié)果:

圖形四:

else if (s.equals("圖形4")) {g1.setColor(Color.BLUE);g1.setStroke(C);double a = 0.4, b = 1, c = 0;double x1 = 0, y1 = 0, x2 = 0, y2 = 0;for (int n = 0; n <= 60000; n++) {x2 = y1 - Math.signum(x1) * Math.sqrt(Math.abs(b * x1 - c));y2 = a - x1;g1.drawLine((int) (x2 * 150 + 500), (int) (y2 * 150 + 250), (int) (x2 * 150 + 500),(int) (y2 * 150 + 250));// 乘以的數(shù),控制大小,整體相加改變位置;x1 = x2;y1 = y2;}}

結(jié)果:

?

圖形五:

else if (s.equals("圖形5")) {g1.setColor(Color.BLUE);g1.setStroke(C);int a = 1, b = 4, c = 60;double x1 = 0, y1 = 0, x2 = 0, y2 = 0;for (int n = 0; n <= 60000; n++) {x2 = y1 - Math.signum(x1) * Math.sqrt(Math.abs(b * x1 - c));y2 = a - x1;g1.drawLine((int) (x2 *3 + 600), (int) (y2*3 + 400), (int) (x2*3 + 600),(int) (y2*3 + 400));//注意畫(huà)線的值;// 乘以的數(shù),控制大小,整體相加改變位置;該圖形的乘數(shù)不能太大,最好控制在0-5之間x1 = x2;y1 = y2;}}

結(jié)果:

?

總結(jié):這幾個(gè)分形圖形還很容易的,不過(guò)要注意畫(huà)圖時(shí)取得的值,(應(yīng)該在窗體內(nèi),xy都應(yīng)該是正數(shù),)

/**
* 窗體是以左上角為原點(diǎn),窗體可見(jiàn)部分都是整數(shù);也就是坐標(biāo)軸的第一象限;
*/

本次用到的公式:都是在math方法中:

/**
* signum(double d):返回參數(shù)的符號(hào)函數(shù);如果參數(shù)為 0,則返回 0;如果參數(shù)大于 0,則返回 1.0;如果參數(shù)小于 0,則返回 -1.0。
abs(double a):返回 double 值的絕對(duì)值。
sqrt(double a):返回正確舍入的 double 值的正平方根。
*/

?

轉(zhuǎn)載于:https://www.cnblogs.com/hesi/p/5595019.html

總結(jié)

以上是生活随笔為你收集整理的分形与数据结构第二篇的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。