在flex中计算矩形的中心点

发布于 2025-01-08 13:22:25 字数 167 浏览 0 评论 0原文

我有两个矩形:

var rect1:Rectangle = new Rectangle(66,147,89,67);

var rect2:矩形 = 新矩形(155,147,89,67);

如何根据这些矩形的 x 和 y 位置计算它们的中心点。我想要相对于舞台计算中心点

I have two rectangles:

var rect1:Rectangle = new Rectangle(66,147,89,67);

var rect2:Rectangle = new Rectangle(155,147,89,67);

How to calculate the centre point of these rectangles based on their x and y positions. I want the centre point to be calculated with relative to stage

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一抹微笑 2025-01-15 13:22:25

在全球之路上。
首先,您需要找到形状的最小点和最大点(在本例中为矩形)。
您需要使用 min.x+(max.x-min.x)/2 和 min.y+(max.y-min.y)/2

这里是如何做到这一点的代码。

var rects:Array={rectangle1,rectangle2}
var min:Point=new Point(Number.MAX_VALUE,NUMBER.MAX_VALUE)
var max:Point=new Point(Number.MIN_VALUE,NUMBER.MIN_VALUE)
foreach(var rect:rectangle in rects)
{
    min.x=Math.min(min.x,rect.left);
    min.y=Math.min(min.y,rect.top);
    max.x=Math.max(max.x,rect.right);
    max.y=Math.max(max.y,rect.bottom);
}

var center:Point=新点(min.x+(max.x-min.x)/2,min.y+(max.y-min.y)/2)
如果您的矩形位于另一个容器而不是舞台中
你可以打电话
contaner.localToGLobal(center) 结果是相对于舞台的位置的点

In Global Way.
First you need to find the minimum and maximum points of your shapes in this case rectangles.
Than you need to use min.x+(max.x-min.x)/2 and min.y+(max.y-min.y)/2

here is code how to do that.

var rects:Array={rectangle1,rectangle2}
var min:Point=new Point(Number.MAX_VALUE,NUMBER.MAX_VALUE)
var max:Point=new Point(Number.MIN_VALUE,NUMBER.MIN_VALUE)
foreach(var rect:rectangle in rects)
{
    min.x=Math.min(min.x,rect.left);
    min.y=Math.min(min.y,rect.top);
    max.x=Math.max(max.x,rect.right);
    max.y=Math.max(max.y,rect.bottom);
}

var center:Point=new Point(min.x+(max.x-min.x)/2,min.y+(max.y-min.y)/2)
if your rectangles are in another container rather than stage
you can call
contaner.localToGLobal(center) the result is point that is position relative to stage

寻找一个思念的角度 2025-01-15 13:22:25

解决方案很简单 - 首先定义第三个矩形的边界,该矩形覆盖两个矩形并计算该矩形的中心。

var left:Number = rect1.x < rect2.x ? rect1.x : rect2.x;
var right:Number = rect1.x + rect1.width > rect2.x + rect2.width ? rect1.x + rect1.width - left : rect2.x + rect2.width - left;
var top:Number = rect1.y < rect2.y ? rect1.y : rect2.y;
var bottom:Number = rect1.y + rect1.height > rect2.y + rect2.height ? rect1.y + rect1.height - top : rect2.y + rect2.height - top;

var centerX:Number = left + 0.5 * right;
var centerY:Number = top + 0.5 * bottom; 

Solution is simple - first define boundaries of a third rectangle, that covers both of the rectangles and calculate the center of that rectangle.

var left:Number = rect1.x < rect2.x ? rect1.x : rect2.x;
var right:Number = rect1.x + rect1.width > rect2.x + rect2.width ? rect1.x + rect1.width - left : rect2.x + rect2.width - left;
var top:Number = rect1.y < rect2.y ? rect1.y : rect2.y;
var bottom:Number = rect1.y + rect1.height > rect2.y + rect2.height ? rect1.y + rect1.height - top : rect2.y + rect2.height - top;

var centerX:Number = left + 0.5 * right;
var centerY:Number = top + 0.5 * bottom; 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文