以下是一个使用Java实现上述功能的示例代码:

import java.util.ArrayList;
import java.util.List;

class Rectangle {
    private int width;
    private int height;
    private int x;
    private int y;
    private boolean rotated;

    public Rectangle(int width, int height) {
        this.width = width;
        this.height = height;
        this.rotated = false;
    }

    public int getWidth() {
        return width;
    }

    public int getHeight() {
        return height;
    }

    public int getX() {
        return x;
    }

    public int getY() {
        return y;
    }

    public boolean isRotated() {
        return rotated;
    }

    public void rotate() {
        int temp = width;
        width = height;
        height = temp;
        rotated = !rotated;
    }

    public void setPosition(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public int getXOffset() {
        return x - width / 2;
    }

    public int getYOffset() {
        return y - height / 2;
    }
}

class RectanglePlacement {
    private int maxX;
    private int maxY;
    private List<Rectangle> rectangles;

    public RectanglePlacement(int maxX, int maxY) {
        this.maxX = maxX;
        this.maxY = maxY;
        this.rectangles = new ArrayList<>();
    }

    public void addRectangle(Rectangle rectangle) {
        rectangles.add(rectangle);
    }

    public void placeRectangles() {
        int currentX = 0;
        int currentY = 0;

        for (Rectangle rectangle : rectangles) {
            if (currentX + rectangle.getWidth() <= maxX) {
                rectangle.setPosition(currentX + rectangle.getWidth() / 2, currentY + rectangle.getHeight() / 2);
                currentX += rectangle.getWidth();
            } else {
                currentX = 0;
                currentY += rectangle.getHeight();
                rectangle.setPosition(currentX + rectangle.getWidth() / 2, currentY + rectangle.getHeight() / 2);
                currentX += rectangle.getWidth();
            }

            if (currentY > maxY) {
                System.out.println("Not enough space to place all rectangles.");
                return;
            }
        }
    }

    public void printOffsets() {
        for (Rectangle rectangle : rectangles) {
            System.out.println("Rectangle: (" + rectangle.getWidth() + ", " + rectangle.getHeight() + ")");
            System.out.println("X Offset: " + rectangle.getXOffset());
            System.out.println("Y Offset: " + rectangle.getYOffset());
            System.out.println();
        }
    }
}

public class Main {
    public static void main(String[] args) {
        RectanglePlacement rectanglePlacement = new RectanglePlacement(10, 10);

        Rectangle rectangle1 = new Rectangle(2, 3);
        Rectangle rectangle2 = new Rectangle(4, 5);
        Rectangle rectangle3 = new Rectangle(3, 2);

        rectanglePlacement.addRectangle(rectangle1);
        rectanglePlacement.addRectangle(rectangle2);
        rectanglePlacement.addRectangle(rectangle3);

        rectanglePlacement.placeRectangles();
        rectanglePlacement.printOffsets();
    }
}

这段代码创建了一个RectanglePlacement类来处理矩形的放置和偏移量计算。在main方法中,我们创建了一个RectanglePlacement对象并添加了三个矩形。然后,我们调用placeRectangles方法将矩形放置在限定范围内,并调用printOffsets方法输出每个矩形的坐标相对于原来坐标在X和Y方向上的偏移量。

在上述示例中,我们假设矩形的宽度和高度都是整数,并且限定范围的最大X和Y值也是整数。根据实际需求,你可以根据自己的情况进行修改

使用Java实现一个功能我有许多矩形已知这些矩形的长宽每个矩形的原点在其正中心在一个限定范围MaxXMaxY内我要把这些矩形放置进去矩形可旋转放置放置完之后输出每个矩形的坐标相对于原来坐标在X和Y方向上的偏移量

原文地址: http://www.cveoy.top/t/topic/h14C 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录