我想创建一个边界框以选择一个形状。我有一个形状矢量和所有点的矢量。目标是在边界框内放置一些形状,然后我可以应用一些变换,例如在画布周围移动一些形状,旋转,调整大小等。
现在我专注于边框来选择和移动一些形状。其他转换适用于以后。
这是班级,我知道至少,我需要这个变量
public class BoundingBox {
int xmax;
int xmin;
int ymax;
int ymin;
public BoundingBox(Vector<Point> points) {
}
我已经实现了其他类,例如,我有一个编辑器面板
Vector<Shape> shapes;
// Current shape that is in construction (if any)
Shape currentShape;
// shape that is selected, if any
Shape selectedShape;
实现形状的类
protected Vector<Point> points;
protected boolean isAShapeBeingBuilt; //is any shape being built?
protected boolean selected; //is any shape selected?
protected ShapesEditorPanel parent; // reference to the panel
显然,我无法将所有代码放在这里,但我希望通过这些信息可以帮助我。主要问题是如何在盒子内选择和移动一些形状!
答案 0 :(得分:1)
首先,不要使用Vector,因为您的代码在单个线程上运行。改为使用ArrayList。
然后,如果要查找边界框,则需要创建一个矩形,对角线由点(smallestX,smallestY)和点(largestX,largestY)定义。迭代你的形状点找到x和y坐标的最小值和最大值。