如何计算一个点的矩形坐标及其到四个边的距离

时间:2015-04-03 16:00:20

标签: java

我想创建一个与另一方不同的Rectangle

(描绘的所有线都是直线)

生成普通矩形,如new Rectangle(50 /*LocationX*/, 50 */LocationY*/, 50 /*SizeX*/, 100 /*SizeY*/);,如下所示: enter image description here

但是,我想要一个像new Rectangle(50 /*LocationX*/, 50 */LocationY*/, 25 /*25 from the centre point for the red line*/, 30 /*30 from the centre point for the blue line*/, 50 /*50 from centre for green line*/, 100 /*100 from centre for yellow line*/);

这样的构造函数

换句话说,我实际上希望保持形状相同但移动中心点。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

在java中,rectangles由左上角坐标,宽度和高度定义。

如果我在这里理解你的问题是什么描述了你的矩形:

  • pointXpointY矩形中某点的坐标。命名
  • distanceToTop到矩形顶部的距离(绿线)。
  • distanceToBottom到矩形底部(黄线)的距离。
  • distanceToLeft到矩形左侧(红线)的距离。
  • distanceToRight到矩形右侧(蓝线)的距离。
那是给定的。矩形的左上角有坐标:

(pointX - distanceToLeft, pointY - distanceToTop)

整个矩形的大小为(宽度,高度)

(distanceToLeft + distanceToRight, distanceToTop + distanceToBottom)

所以你的实例将是:

Rectangle r = new Rectangle(
    pointX - distanceToLeft,           // upper-left corner X
    pointY - distanceToTop,            // upper-left corner Y
    distanceToLeft + distanceToRight,  // width
    distanceToTop + distanceToBottom   // height
    );