Как использовать StdDraw java для создания анимации с объектами? - PullRequest
0 голосов
/ 13 марта 2020

Я хотел сделать что-то похожее на анимацию Принстона, где они делали два круга, кружили друг вокруг друга, но я сделал объект собаки и объект «вода bottle», и я хочу, чтобы они делали одно и то же движение при каждом круге. Другой. Кто-нибудь знает, как я мог заставить это работать с объектами, которые у меня есть, код, который я имею до сих пор, ниже:

public class jackAndBottle {
    public static void main(String[] args) {
        StdDraw.setCanvasSize(800, 800);
        StdDraw.setPenRadius(0.009);
        StdDraw.setPenColor(StdDraw.BLACK);

        jackAndBottle jack = new jackAndBottle();

        StdDraw.enableDoubleBuffering();
        for (double t = 0.0; true; t += 0.02) {
            double x = Math.sin(t);
            double y = Math.cos(t);
            StdDraw.clear();
            jack.drawDog(x, y);
            jack.drawBottle(-x, -y);
            StdDraw.show();
            StdDraw.pause(20);
        }
    }

    public void drawDog (double x, double y) {
        StdDraw.setPenColor(StdDraw.DARK_GRAY);
        StdDraw.filledCircle(0.5, 0.5, 0.1);
        StdDraw.setPenColor(StdDraw.BLACK);
        StdDraw.circle(0.5, 0.5, 0.1);
        StdDraw.arc(0.5, 0.385, 0.1, 70, 110);
        StdDraw.arc(0.55, 0.43, 0.1, 150, 186); 
        StdDraw.arc(0.45, 0.43, 0.1, 354, 29); 

        double[] r = { 0.5, 0.48, 0.5, 0.52, 0.5 };
        double[] t = { 0.47, 0.465, 0.449, 0.465, 0.47 };
        StdDraw.filledPolygon(r, t);
        StdDraw.line(0.5, 0.449, 0.49, 0.4);
        StdDraw.line(0.5, 0.449, 0.51, 0.4);

        StdDraw.filledCircle(0.45, 0.51, 0.01);
        StdDraw.filledCircle(0.55, 0.51, 0.01);

        StdDraw.setPenColor(StdDraw.DARK_GRAY);
        double[] a = { 0.37, 0.4, 0.43 };
        double[] b = { 0.57, 0.5, 0.58 };
        StdDraw.filledPolygon(a, b);

        double[] c = { 0.63, 0.6, 0.57 };
        double[] d = { 0.57, 0.5, 0.58 };
        StdDraw.filledPolygon(c, d);

        StdDraw.setPenColor(StdDraw.BLACK);
        StdDraw.polygon(a, b);
        StdDraw.polygon(c, d);

        StdDraw.line(0.47, 0.53, 0.44, 0.55);
        StdDraw.line(0.57, 0.55, 0.54, 0.53);
    }

    public void drawBottle(double x, double y) {
        double[] g = { 0.6, 0.45, 0.45, 0.4, 0.4, 0.65, 0.65, 0.65, 0.6 };
        double[] f = { 0.75, 0.75, 0.7, 0.65, 0.2, 0.2, 0.6, 0.65, 0.7 };
        StdDraw.polygon(g, f);
    }
}

if you could help me out I would be really grateful!
...