如何在java中绘制koch曲线而不使用内置函数?

如何在java中绘制koch曲线而不使用内置函数?,java,graphics,drawing,Java,Graphics,Drawing,我曾经尝试过使用内置函数,但我也很想知道如何在没有内置函数的情况下在Java中绘制Koch曲线。请在答案中留下您的建议,谢谢 我怎样才能得到科赫曲线图 如果你想在屏幕上看到任何东西,你必须使用一些内置的图形功能。无论如何,这里有一个Koch曲线的快速而肮脏的Java实现 因此,您不想使用图形或抽绳或形状和移动到或线到?不确定您对“没有内置功能”的期望是什么-因为这将是。。。不,我想不用海龟课。下面是我的密码。无论如何,谢谢你的邀请!!!既然“海龟”不是标准API的一部分,它会让你的问题变得不清

我曾经尝试过使用内置函数,但我也很想知道如何在没有内置函数的情况下在Java中绘制Koch曲线。请在答案中留下您的建议,谢谢

我怎样才能得到科赫曲线图

如果你想在屏幕上看到任何东西,你必须使用一些内置的图形功能。无论如何,这里有一个Koch曲线的快速而肮脏的Java实现


因此,您不想使用
图形
抽绳
形状
移动到
线到
?不确定您对“没有内置功能”的期望是什么-因为这将是。。。不,我想不用海龟课。下面是我的密码。无论如何,谢谢你的邀请!!!既然“海龟”不是标准API的一部分,它会让你的问题变得不清晰。有人帮我解决我问的问题吗?非常感谢。这正是我想的代码。这段代码工作得很完美。非常感谢!!!!!!。。。。。谢谢你的回答你能帮我修改一下帖子吗
public class Koch extends JComponent
{
  int depth = 4;
  Point2D[] pts;

  public Koch(int w, int h)
  {
    setSize(w, h);
    pts = new Point2D[] {
        new Point2D.Double(w/8, 3*h/4),
        new Point2D.Double(w-w/8, 3*h/4),
        new Point2D.Double(w/2, 3*h/4 - Math.sqrt(3)*3*h/8)
    };
  }

  private void drawSide(Path2D p, double x2, double y2, int depth)
  {
    if(depth == 0)
    {
      p.lineTo(x2,  y2);;
      return;
    }    

    double x1 = p.getCurrentPoint().getX(); 
    double y1 = p.getCurrentPoint().getY();     
    double x3 = x1+(x2-x1)/3;
    double y3 = y1+(y2-y1)/3;
    double x4 = x1+2*(x2-x1)/3; 
    double y4 = y1+2*(y2-y1)/3;
    double cx = x3+(x4-x3)/2 - Math.sqrt(3)*(y4-y3)/2; 
    double cy = y3+(y4-y3)/2 + Math.sqrt(3)*(x4-x3)/2;   

    p.lineTo(x3, y3);
    drawSide(p, cx, cy, depth-1);
    drawSide(p, x4, y4, depth-1);
    p.lineTo(x2, y2);
  }

  public void paintComponent(Graphics g1)
  {
    g1.setColor(Color.WHITE);
    g1.fillRect(0, 0, getWidth(), getHeight());

    Graphics2D g = (Graphics2D)g1;
    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);    
    g.setColor(Color.BLUE);

    Path2D p = new Path2D.Double();
    p.moveTo(pts[0].getX(), pts[0].getY());
    drawSide(p, pts[1].getX(), pts[1].getY(), depth);
    drawSide(p, pts[2].getX(), pts[2].getY(), depth);
    drawSide(p, pts[0].getX(), pts[0].getY(), depth);
    g.draw(p);
  }

  public Dimension getPreferredSize()
  {
    return getSize();
  }

  public static void main(String[] args)
  {
    JFrame f = new JFrame("Koch Curve");    
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.getContentPane().add(new Koch(400, 400));
    f.pack();
    f.setVisible(true);
  }
}