标签: rectangles

两个矩形之间的差异(XOR),如矩形?

我正在寻找一种简单的方法来计算两个矩形之间的差异.我的意思是所有属于一个矩形的点,但不属于两个(所以它就像XOR).

在这种情况下,矩形是轴对齐的,因此只有直角.我相信差异区域可以用0-4个矩形表示(如果两个矩形相同则为0,如果只有一个边缘不同则为1,一般情况下为4),我想将差异区域作为列表矩形

您还可以将其视为在移动/调整实体矩形时必须更新的屏幕区域.

示例:将矩形"a"的宽度加倍 - 我想要添加的区域(R).

+----+----+
| a  | R  |
|    |    |
+----+----+                   
Run Code Online (Sandbox Code Playgroud)

相交的矩形(a和b) - 我希望T,L,R和B在矩形中给出的区域(可能的其他分区),但不包括X:

+------------+  a
|      T     |
|·····+------+-----+  b
|  L  | X    |  R  |
|     |      |     |
+-----+------+·····|
      |    B       |
      +------------+
Run Code Online (Sandbox Code Playgroud)

我更喜欢python解决方案/库,但任何强大的算法都会有所帮助.

geometry rectangles

6
推荐指数
1
解决办法
3632
查看次数

如何安排N个矩形覆盖最小面积

可能重复:
以相当优化的方式打包矩形所需的算法

我有N个矩形,每个都是随机大小(随机宽度和高度).所有矩形都与X和Y轴平行.我正在寻找一种算法,帮助我并排排列这些矩形,使得生成的边界矩形具有最小面积,并且输入矩形周围/之间的潜在间隙尽可能小.矩形不能旋转,可能不会相互重叠.

(我需要这些来自动化游戏精灵的排列,这样我就可以创建精灵表并从动画师的各种图像中保存精灵位置.)

例如:

+---+   +----------+
| 1 |   |    2     |
+---+   +----------+                 +----------+..           +---+----------+
                                     |    2     |..           | 1 |    2     |
+--------+                ===>       +--------+-+-+    vs     +---+----+-----+
|        |                           |        | 1 |           |        |......
|    3   |                           |    3   +---+           |    3   |......
+--------+                           +--------+....           +--------+......

                                       Unused: 8                 Unused: 18
Run Code Online (Sandbox Code Playgroud)

未使用的空间由图中的点(.)标记.由于第一个结果具有带有较小未使用空间的边界矩形,因此最好找到输入矩形的这种排列.

是否有一种算法可以帮助解决这个问题?我做了很多谷歌搜索,但大多数结果与找到最小边界矩形或找到N个矩形覆盖预定区域有关.

algorithm math rectangles area

6
推荐指数
1
解决办法
5267
查看次数

获取旋转矩形的角

我有一个围绕它的中间旋转的矩形,我有另一个矩形,我想连接到旋转矩形的右上角.问题是我不知道如何到达角落,以便第二个矩形总是会粘在那个角落.

这是我的示例代码.现在第二个矩形将始终在同一个地方,这不是我追求的结果.

package Test;

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;

class Test{

    public static void main(String[] args){
        new Test();
    }

    public Test(){
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new JFrame("Test");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new Graphic());
                frame.setSize(1000,700);
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }
}

class Graphic extends JPanel{
    private int x, y, windowW, windowH;
    private double angle;
    private Rectangle rect1, rect2;
    private Path2D path;
    private Timer timer;
    private AffineTransform rotation;

    public Graphic(){
        windowW = (int) …
Run Code Online (Sandbox Code Playgroud)

java awt shape rotation rectangles

6
推荐指数
1
解决办法
1548
查看次数

计算相邻框的数量

假设我有一组(X,Y)坐标为1000个盒子.

         (    x1,    y1)    (    x2,    y2)      Area

         (0.0000,0.0000)    (0.3412,0.4175)    0.1424
         (0.7445,0.0000)    (1.0000,0.6553)    0.1674
         (0.7445,0.6553)    (1.0000,1.0000)    0.0881
         (0.0000,0.6553)    (0.7445,1.0000)    0.2566
         (0.3412,0.0000)    (0.7445,0.4175)    0.1684
         (0.3412,0.4175)    (0.7445,0.6553)    0.0959
         (0.0000,0.4175)    (0.3412,0.6553)    0.0812 ....etc
Run Code Online (Sandbox Code Playgroud)

我想用c/c ++计算每个盒子相邻盒子的数量.我该怎么做?

在此输入图像描述

在这张图片中,方框7的相邻方框总数为6,方框3为3.如何使用c ++计算它们?

使用新值进行编辑和更新

让我们尝试16个值 -

1   0.0000   0.0000      0.8147   0.1355  
2   0.8147   0.0000      1.0000   0.1355  
3   0.8147   0.1355      0.9058   0.8350  
4   0.0000   0.1355      0.1270   0.9689  
5   0.9058   0.1355      0.9134   0.2210  
6   0.9058   0.8350      1.0000   1.0000  
7   0.8147   0.8350      0.9058   1.0000  
8   0.1270   0.1355      0.6324   0.3082  
9   0.1270 …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm simulation rectangles

6
推荐指数
1
解决办法
624
查看次数

如何将透明矩形添加到R boxplot(plot)?

我有一个简单的箱形图用于我的数据使用R ..

boxplot (Error~Code, DataFrame1, xlim = c(0, 27),
     xlab="set Code",ylab="Error", boxwex=0.75, cex.axis=0.3)
Run Code Online (Sandbox Code Playgroud)

我想在2个定义的y值之间绘制一个透明的矩形:( - 50)和(100)!

我在上一个脚本之后尝试使用函数rect,如下所示:

  rect(0,-50,27,100, col= 'tomato2', density=10)
Run Code Online (Sandbox Code Playgroud)

但这并没有给我一个透明的均匀彩色矩形!

有人可以帮助我吗?到目前为止,我差不多花了2个多小时没有成功.

提前谢谢了!

plot r transparent rectangles boxplot

6
推荐指数
1
解决办法
9654
查看次数

如何找到矩形周长中最近的点到给定点?

这是一个与语言无关的问题.给定矩形的尺寸l,t,w,h(左,顶部,宽度,高度)和一个点x,y,如何找到矩形周长上的最近点到该点?

我试图在Lua中解决它,但任何其他语言都可以.到目前为止,这是我的最大努力:

local function nearest(x, a, b)
  if a <= x and x <= b then
    return x
  elseif math.abs(a - x) < math.abs(b - x) then
    return a
  else
    return b
  end
end

local function getNearestPointInPerimeter(l,t,w,h, x,y)
  return nearest(x, l, l+w), nearest(y, t, t+h)
end
Run Code Online (Sandbox Code Playgroud)

这适用于周边之外或周边本身.但对于周界的点,它会失败(它只会返回x,y)

我的直觉告诉我解决方案应该很简单,但我似乎没有找到它.

math geometry rectangles bounding-box

6
推荐指数
1
解决办法
5905
查看次数

如何在Javafx中的Rectangle中添加文本

如何在矩形的中心添加文本?我一直在寻找并没有找到办法做到这一点.

见下面的课程:

public class Agent extends Rectangle{         

    public Agent() {
        setWidth(60);
        setHeight(60);
        setArcWidth(60);
        setArcHeight(60);                
        setFill(Color.BLUEVIOLET.deriveColor(0, 1.2, 1, 0.6));
        setStroke(Color.BLUEVIOLET);
     }    
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

javafx rectangles

6
推荐指数
1
解决办法
2万
查看次数

边界框与矩形

边界框和矩形之间有什么区别?

这个问题是关于Unity 3D的BoundsRect类的,但我对一般答案更感兴趣.

特别:

  • 哪个性能更好?
  • 边界框只是一个3D矩形吗?
  • 我什么时候应该更喜欢一个?
  • 它们是可互换的术语,如果是这样,为什么Unity 3D会为它们分别设置类?
  • 您可以提供的任何其他知识将不胜感激!

terminology rectangles bounding-box unity-game-engine difference

6
推荐指数
1
解决办法
2261
查看次数

最小面积计算算法(仅在边缘放置切片)

我有不同尺寸的小矩形(1cm x 2xm,2cmx3cm,4cm*6cm等).不同类型矩形的数量可根据情况而变化.每种类型的不同矩形可以具有不同数量的计数.

我需要创建一个包含所有这些小矩形的大矩形,这些小矩形只能放在边缘上.没有轮换.理想情况下,最终的外部矩形应该是方形的.X~Y.并非所有边缘都需要填满.较小的矩形之间可能存在间隙.图片示例:http:
//i.stack.imgur.com/GqI5z.png

我正在尝试编写一个代码,找出可以形成的最小可能区域.

我有一个算法循环所有可能的位置,以找出可能的最小区域.但是,随着不同类型矩形的数量和矩形数量的增加,这需要很长的运行时间.即2种类型的矩形,每种都有100 +矩形.8循环.那将是~100 ^ 8次迭代

有关更好和更快算法的任何想法,以计算最小可能区域?代码是在python中,但任何算法概念都可以.

    for rectange_1_top_count in (range(0,all_rectangles[1]["count"]+1)):
      for rectange_1_bottom_count in range(0,all_rectangles[1]["count"]-rectange_1_top_count+1):
        for rectange_1_left_count in (range(0,all_rectangles[1]["count"]-rectange_1_top_count-rectange_1_bottom_count+1)):
          for rectange_1_right_count in ([all_rectangles[1]["count"]-rectange_1_top_count-rectange_1_bottom_count-rectange_1_left_count]):
            for rectange_2_top_count in (range(0,all_rectangles[2]["count"]+1)):
              for rectange_2_bottom_count in (range(0,all_rectangles[2]["count"]-rectange_2_top_count+1)):
                for rectange_2_left_count in (range(0,all_rectangles[2]["count"]-rectange_2_bottom_count-rectange_2_top_count+1)):
                  for rectange_2_right_count in [(all_rectangles[2]["count"]-rectange_2_bottom_count-rectange_2_left_count-rectange_2_top_count)]:
                      area=calculate_minimum_area()
                      if area< minimum_area:
                        minimum_area=area
Run Code Online (Sandbox Code Playgroud)

algorithm geometry rectangles minimization placement

6
推荐指数
1
解决办法
153
查看次数

根据规则在矩形巧克力棒中找到最小数量的矩形块

我的学校作业遇到了麻烦.我有一个巧克力棒,由黑色,白色或黑白(混合)方块组成.我应该将它分为两​​组,一组只有白色或黑白色,另一组只有黑色或黑色和白色.将巧克力棒分开意味着沿着分隔各个方块的线水平或垂直地开裂.

鉴于巧克力棒的布局,我要找到一个最佳的分区,将黑色和白色立方体分开并产生尽可能少的碎片,巧克力棒不大于50x50正方形.

巧克力条在标准输入上定义如下:第一行由两个整数M(巧克力条中的行数)和N(列数)组成,然后有M列,每列包含N个字符,表示各个方块(0 -black,1-white,2-mixed)

最佳除法的一些例子,它们的输入分别(正确的输出是3和7):

最佳划分的一些例子

3 3
1 1 2
1 2 0
2 0 0

4 4
0 1 1 1
1 0 1 0
1 0 1 0
2 0 0 0
Run Code Online (Sandbox Code Playgroud)

我的问题是我设法找到了一个解决方案,但我使用的算法速度不够快,如果巧克力棒像这样大,例如:

40 40
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
0 0 0 …
Run Code Online (Sandbox Code Playgroud)

c algorithm dynamic-programming rectangles

6
推荐指数
1
解决办法
416
查看次数