最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實(shí)現(xiàn)直線分形山脈

 更新時(shí)間:2022年01月11日 07:17:26   作者:Benjamin.  
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)直線分形山脈,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了java實(shí)現(xiàn)直線分形山脈的具體代碼,供大家參考,具體內(nèi)容如下

直線分形

直線分形平面山脈

想要實(shí)現(xiàn)這個(gè)效果的思想就是,由x1、x2所確定的一條直線,我們?nèi)∷鼈兊闹悬c(diǎn)x3然后允許x3的y坐標(biāo)在一定范圍內(nèi)隨機(jī)波動(dòng),(這種情況下我們讓x1連接x3,x2連接x3就會(huì)看起來(lái)有小山的感覺(jué)了,但其實(shí)我們是在遞歸結(jié)束時(shí)才開(kāi)始連線的)接下來(lái)做相同的動(dòng)作,讓x1與x3的中點(diǎn)x4的y坐標(biāo)在一定范圍內(nèi)波動(dòng),x2與x3的中點(diǎn)x5的y坐標(biāo)在一定范圍內(nèi)隨機(jī)波動(dòng),就這樣遞歸下去,最后在我們完成設(shè)定的遞歸層數(shù)后就開(kāi)始連線,并且填充它們之間所包含的區(qū)域,那么就實(shí)現(xiàn)了直線分形的平面山脈啦。(作為手殘黨的我畫(huà)圖是真的不好看,小伙伴們就將就著看看好了,T.T…)

效果圖

這是我這個(gè)代碼畫(huà)出的一個(gè)效果。

山脈

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Polygon;
import java.util.Random;

import javax.swing.JFrame;


public class LineString {
?? ?JFrame frame=new JFrame();

?? ?public static void main(String[] args) {
?? ??? ?LineString line=new LineString();
? ? ? ? line.showUI();
?? ?}
?? ?public void drawline(int x1,int y1,int x2,int y2,int n,Graphics g,int range,int height){
//參數(shù)解釋:x1,y1,x2,y2就是我們當(dāng)前兩個(gè)點(diǎn)的坐標(biāo),n是我設(shè)定的遞歸層數(shù)
//range就是允許中點(diǎn)坐標(biāo)波動(dòng)的范圍,height是最后填充時(shí)會(huì)用到的?? ??? ?
? ?//在遞歸結(jié)束的時(shí)候,我們才開(kāi)始畫(huà)山脈
? //填充的時(shí)候我們已經(jīng)知道了需要填充不規(guī)則四邊形的上面兩個(gè)點(diǎn)的坐標(biāo)
?//那么下面兩個(gè)點(diǎn)的橫坐標(biāo)我們就也可以對(duì)應(yīng)上面的兩個(gè)點(diǎn)
?//只需要將上面兩個(gè)點(diǎn)的y坐標(biāo)設(shè)為界面底部就OK
//所以我這里讓下面的兩個(gè)點(diǎn)加上height,當(dāng)然這個(gè)height也是跟著界面在改變
?? ? ? ?if(n<=0){
?? ? ? ??? ?int []x={x1,x2,x2,x1};
?? ? ? ??? ?int []y={y1,y2,y2+height,y1+height};
?? ? ? ??? ?Polygon polygon=new Polygon(x,y,4);
?? ? ? ??? ?g.setColor(Color.BLACK);
?? ? ? ??? ?g.fillPolygon(polygon);
?? ? ? ??? ?return ;
?? ? ? ?}
?? ? ? ?//求中點(diǎn)的坐標(biāo)
?? ? ? ?int x=(x2+x1)/2;?
?? ??? ?int y=(y2+y1)/2;
?? ??? ?//這里的range可能會(huì)為0,為了修復(fù)這個(gè)bug,我們要檢測(cè)它
?? ??? ? ? if(range==0){
? ? ? ? ?? ?range=1;
? ? ? ? }
? ? ? ? Random rand=new Random();
? ? ? ? int i=rand.nextInt(range*2)-range;
? ? ? ? //讓中點(diǎn)的y坐標(biāo)隨機(jī)波動(dòng)
? ? ? ? y+=i;
? ? ? ? //減少遞歸層數(shù)
?? ??? ?n--;
?? ??? ?//每一次遞歸都減少range可以波動(dòng)的范圍
?? ??? ?range *= 0.6;?? ?
?? ??? ?
?? ??? ?//將山脈分成左右兩邊
?? ??? ?//畫(huà)左邊
?? ? ? ?drawline(x1,y1,x,y,n,g,range,height);
?? ? ? ?//畫(huà)右邊
? ? ?? ?drawline(x,y,x2,y2,n,g,range,height);
?? ? ??
?? ?}
? ? public void showUI(){
? ? ?? ?Dimension dim=new Dimension(1000,1000);
? ? ?? ?frame.setTitle("Recursion");
? ? ?? ?frame.setSize(dim);
? ? ?? ?frame.setLocationRelativeTo(null);
? ? ?? ?frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
? ? ?? ?LineListener listener=new LineListener(frame);
? ? ?? ?frame.addMouseListener(listener);
? ? ?? ?frame.setVisible(true);
? ? ?? ?Graphics g=frame.getGraphics();
? ? ?? ?listener.g=g;
? ? ?? ?
? ? ?? ?listener.height=frame.getHeight();
? ? }
}

山脈界面監(jiān)聽(tīng)器
 

import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JFrame;

public class LineListener implements MouseListener{

?? ?int x1,x2,y1,y2;
? ? public Graphics g;
? ? int height;
? ? JFrame frame;
? ? public LineListener(JFrame frame) {
?? ??? ?// TODO Auto-generated constructor stub
? ? ?? ?this.frame=frame;
? ? ?? ?this.height=frame.getHeight();
? ? ?? ?
?? ?}
?? ?@Override
?? ?public void mousePressed(MouseEvent e) {
?? ??? ?// TODO Auto-generated method stub
?? ??? ?
?? ??? ?x1=e.getX();
?? ??? ?y1=e.getY();
?? ?}

?? ?@Override
?? ?public void mouseReleased(MouseEvent e) {
?? ??? ?// TODO Auto-generated method stub
?? ??? ?
?? ??? ?x2=e.getX();
?? ??? ?y2=e.getY();
?? ??? ?LineString string=new LineString();
?? ??? ?string.drawline(x1, y1, x2, y2, 9, g,300,height);
?? ?}

?? ?@Override
?? ?public void mouseClicked(MouseEvent e) {
?? ??? ?// TODO Auto-generated method stub
?? ??? ?
?? ?}

?? ?@Override
?? ?public void mouseEntered(MouseEvent e) {
?? ??? ?// TODO Auto-generated method stub
?? ??? ?
?? ?}

?? ?@Override
?? ?public void mouseExited(MouseEvent e) {
?? ??? ?// TODO Auto-generated method stub
?? ??? ?
?? ?}


}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot中Controller的傳參方式詳細(xì)講解

    SpringBoot中Controller的傳參方式詳細(xì)講解

    這篇文章主要介紹了SpringBoot在Controller層接收參數(shù)的常用方法,Controller接收參數(shù)的常用方式總體可以分為三類,第一類是Get請(qǐng)求通過(guò)拼接url進(jìn)行傳遞,第二類是Post請(qǐng)求通過(guò)請(qǐng)求體進(jìn)行傳遞,第三類是通過(guò)請(qǐng)求頭部進(jìn)行參數(shù)傳遞,下面我們來(lái)詳細(xì)看看
    2023-01-01
  • Spring項(xiàng)目集成RabbitMQ及自動(dòng)創(chuàng)建隊(duì)列

    Spring項(xiàng)目集成RabbitMQ及自動(dòng)創(chuàng)建隊(duì)列

    這篇文章主要介紹了Spring項(xiàng)目集成RabbitMQ及自動(dòng)創(chuàng)建隊(duì)列,本文內(nèi)容分別在Spring(V5.2.6)和Spring Boot(V2.5.14)兩個(gè)項(xiàng)目中經(jīng)過(guò)了驗(yàn)證,需要的朋友可以參考下
    2024-02-02
  • 利用Kotlin + Spring Boot實(shí)現(xiàn)后端開(kāi)發(fā)

    利用Kotlin + Spring Boot實(shí)現(xiàn)后端開(kāi)發(fā)

    這篇文章主要給大家介紹了關(guān)于利用Kotlin + Spring Boot實(shí)現(xiàn)后端開(kāi)發(fā)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • java實(shí)現(xiàn)字符串四則運(yùn)算公式解析工具類的方法

    java實(shí)現(xiàn)字符串四則運(yùn)算公式解析工具類的方法

    今天小編就為大家分享一篇java實(shí)現(xiàn)字符串四則運(yùn)算公式解析工具類的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • 使用RestTemplate 調(diào)用遠(yuǎn)程接口上傳文件方式

    使用RestTemplate 調(diào)用遠(yuǎn)程接口上傳文件方式

    這篇文章主要介紹了使用RestTemplate 調(diào)用遠(yuǎn)程接口上傳文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java軟件設(shè)計(jì)模式之適配器模式詳解

    Java軟件設(shè)計(jì)模式之適配器模式詳解

    這篇文章主要介紹了Java軟件設(shè)計(jì)模式之適配器模式詳解,適配器模式可分為對(duì)象適配器和類適配器兩種,在對(duì)象適配器模式中,適配器與適配者之間是關(guān)聯(lián)關(guān)系;在類適配器模式中,適配器與適配者之間是繼承(或?qū)崿F(xiàn))關(guān)系,需要的朋友可以參考下
    2023-07-07
  • JAVA JSP頁(yè)面技術(shù)之EL表達(dá)式整理歸納總結(jié)

    JAVA JSP頁(yè)面技術(shù)之EL表達(dá)式整理歸納總結(jié)

    這篇文章主要介紹了java中JSP頁(yè)面技術(shù)之EL表達(dá)式概念作用以及語(yǔ)法等的使用,需要的朋友可以參考
    2017-04-04
  • Maven如何解決添加依賴之后沒(méi)有加載jar包報(bào)錯(cuò)問(wèn)題

    Maven如何解決添加依賴之后沒(méi)有加載jar包報(bào)錯(cuò)問(wèn)題

    這篇文章主要介紹了Maven如何解決添加依賴之后沒(méi)有加載jar包報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • JGroups實(shí)現(xiàn)聊天小程序

    JGroups實(shí)現(xiàn)聊天小程序

    這篇文章主要為大家詳細(xì)介紹了JGroups實(shí)現(xiàn)聊天小程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • java算法實(shí)現(xiàn)預(yù)測(cè)雙色球中獎(jiǎng)號(hào)碼

    java算法實(shí)現(xiàn)預(yù)測(cè)雙色球中獎(jiǎng)號(hào)碼

    這篇文章主要介紹了java算法實(shí)現(xiàn)預(yù)測(cè)雙色球中獎(jiǎng)號(hào)碼的相關(guān)資料,需要的朋友可以參考下
    2015-12-12

最新評(píng)論

四川省| 收藏| 教育| 维西| 米脂县| 二连浩特市| 读书| 新蔡县| 司法| 瓮安县| 江津市| 庄河市| 简阳市| 宜良县| 旬阳县| 广河县| 阿勒泰市| 淮阳县| 宣恩县| 县级市| 西和县| 广饶县| 龙南县| 永新县| 五常市| 文化| 辽宁省| 陈巴尔虎旗| 荔浦县| 广南县| 建始县| 五寨县| 莱州市| 临夏市| 灯塔市| 桑日县| 明溪县| 新津县| 金秀| 蚌埠市| 白玉县|