具有坐标矩阵的小程序中的希尔伯特曲线

时间:2018-02-26 00:00:22

标签: java jframe jpanel graphics2d hilbert-curve

我试图通过Hilbert曲线程序逼近旅行商问题的解决方案。我必须使用applet来完成它。如何在我的代码中添加Matrix,以及如何在Applet中显示坐标。我不需要有一个以上的框架。

代码如下:

import java.awt.*;
import java.applet.*;   

// Background images (put a map in the back of the applet)

public class HilbertCurve extends Applet{
private SimpleGraphics sg = null;
private final int dist0=512;
private int dist=dist0;


@Override
public void init(){
    resize(dist0, dist0 +300);
    sg = new SimpleGraphics(getGraphics());
}

@Override
public void paint(Graphics g){
    int level = 5;
    dist = dist0;
    for(int i=level; i>0; i--) dist/=2;
    sg.goToXY (dist/2, dist/2);
    HilbertU(level);
}

private void HilbertU(int level){
    if(level>0){
        HilbertD(level-1); sg.lineRel(0,dist);
        HilbertU(level-1); sg.lineRel(dist,0);
        HilbertU(level-1); sg.lineRel(0,-dist);
        HilbertC(level-1);
    }
}

private void HilbertD(int level){
    if(level>0){
        HilbertU(level-1); sg.lineRel(dist,0);
        HilbertD(level-1); sg.lineRel(0,dist);
        HilbertD(level-1); sg.lineRel(-dist,0);
        HilbertA(level-1);
    }
}
private void HilbertC(int level){
    if(level>0){
        HilbertA(level-1); sg.lineRel(-dist,0);
        HilbertC(level-1); sg.lineRel(0,-dist);
        HilbertC(level-1); sg.lineRel(dist,0);
        HilbertU(level-1);
    }
}
private void HilbertA(int level){
    if(level>0){
        HilbertC(level-1); sg.lineRel(0,-dist);
        HilbertA(level-1); sg.lineRel(-dist,0);
        HilbertA(level-1); sg.lineRel(0,dist);
        HilbertD(level-1);
    }
}
}

我需要在矩阵中设置城市,然后当我到达城市以在城市之间划一条线时,以便找到到达它的最短路径。

0 个答案:

没有答案