私はJavaでコーディングすることを学んでおり、Javaプログラミングの再帰部分に到達しました。私は再帰的方法の基本を理解しており、空間充填ヒルベルト曲線 (および Levy C 曲線) をコーディングしようとしていますが、これまでのところ、実際の再帰部分まではすべて順調に進んでいます。再帰的な方法を考え出すのに苦労しています。誰かが私を助けてくれるかどうか知りたいです。また、DrawHilbert メソッドに含める必要があることもわかっています。
public class HilbertCurve extends JPanel {
int N;
/**
* Constructor for Hilbert Curve
*/
public HilbertCurve ()
{
Scanner myKeyboard = new Scanner(System.in);
System.out.println("Enter an integer number to indicate the level of recursive depth: ");
N = myKeyboard.nextInt();
// Create a JFrame - a window that will appear on your screen
JFrame f = new JFrame();
// Tells the program to quit if you close the window
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Puts your drawing into the window (the JFrame)
f.add(new JScrollPane(this));
// Changes the size of the window on the screen
f.setSize(600, 600);
// Changes where the window will appear on your screen
f.setLocation(200, 200);
// Makes the window appear
f.setVisible(true);
}
public void setupHilbert (Turtle turtle)
{
turtle.penup();
turtle.setXY(0,0);
// draw a simple rectangle that is 100x50 pixels
turtle.pendown();
drawHilbert(turtle, N);
}
public void drawHilbert(Turtle turtle, int n) {
if (n == 0) return;
turtle.changeColor(Color.GREEN);
turtle.changeWidth(2);
turtle.left(-90);
turtle.forward(100);
turtle.left(90);
turtle.forward(100);
turtle.left(90);
turtle.forward(100);
turtle.left(-90);
turtle.penup();
}
protected void paintComponent(Graphics g)
{
Turtle turtle = new Turtle((Graphics2D) g, getBounds());
turtle.setHeadingMode(Turtle.DEGREE);
setupHilbert(turtle);
}
// plot a Hilbert curve of order N
public static void main(String[] args)
{
Scanner myKeyboard = new Scanner(System.in);
HilbertCurve test = new HilbertCurve();
}
}