我想将我的游戏网格划分为一个矩形阵列.每个矩形为40x40,每列有14个矩形,总共25列.这涵盖了560x1000的游戏区域.
这是我设置的代码,用于在游戏网格上创建第一列矩形:
Rectangle[] gameTiles = new Rectangle[15];
for (int i = 0; i <= 15; i++)
{
gameTiles[i] = new Rectangle(0, i * 40, 40, 40);
}
Run Code Online (Sandbox Code Playgroud)
我很确定这是有效的,但当然我无法确认它,因为矩形不会在屏幕上呈现让我亲眼看到它们.我想为调试目的做的是渲染边框,或用颜色填充矩形,这样我就可以在游戏本身上看到它,只是为了确保它有效.
有没有办法让这种情况发生?或者任何相对简单的方法我可以确保这个有效吗?
非常感谢你.
我有两个矩形,我必须在函数中返回它们是否相交.
它们由[ x0, y0, x1, y1 ]表示矩形的左上角和右下角的对表示.或者,您的解决方案可能是[ x0, y0, width, height ]如果它在某种程度上更简单,我可以通过它调整我的函数的参数输入.
我试图看看矩形A中的两个角中是否有任何一个包含在矩形B中,但如果A大于B且B部分包含在A中,则表示它不重叠.现在我可以尝试A和B,但这似乎是一种糟糕的做事方式.
我不能预制一个大网格并占据矩形的矩形,因为不知道矩形是什么.我只能说它们是无符号整数,最小值为0且未知最大值.
根据我的经验和Oracle Java API文档,我知道他们这样做了,但我想知道为什么.通过构造函数,我只允许将int类型参数传递给Rectangle类,x,y等的内部数据表示属于类型int,并且setSize()只排除类型的参数int.但是,为什么像所有的方法getX(),getY(),getWidth()等返回双时不能有任何的精度?为什么不像int预期的那样简单?
编辑:我确实理解它是从Rectangle2D类派生的,但是仍然没有理由只是不提供任何int基础getX()和getY()函数,因为与Point和Point2D类不同,这些方法不是抽象的.另外setLocation()是不是抽象的要么.
我有一组轴对齐的矩形.当两个矩形重叠(部分或完全)时,它们将合并到它们的公共边界框中.此过程以递归方式工作.
检测所有的重叠和使用工会发现,形成组,您合并,最终将无法工作,因为两个矩形的合并覆盖更大面积,可以创造新的重叠.(在下图中,合并了两个重叠的矩形后,会出现新的重叠.)
在我的情况下,矩形的数量是中等的(比如N <100),可以使用强力解决方案(尝试所有对,如果发现重叠,则从头开始合并并重新启动).无论如何,我想降低复杂性,在最坏的情况下可能是O(N³).
有什么建议如何改善这个?
我有一个围绕它的中间旋转的矩形,我有另一个矩形,我想连接到旋转矩形的右上角.问题是我不知道如何到达角落,以便第二个矩形总是会粘在那个角落.
这是我的示例代码.现在第二个矩形将始终在同一个地方,这不是我追求的结果.
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) 我有一个简单的箱形图用于我的数据使用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个多小时没有成功.
提前谢谢了!
这是一个与语言无关的问题.给定矩形的尺寸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)
我的直觉告诉我解决方案应该很简单,但我似乎没有找到它.
问题
我需要将尺寸为n×m的矩形放入尺寸为N×M的矩阵的自由区域中,其中N=n*2-1,M=m*2-1.矩阵单元被认为是免费的,如果它是true,并被占用false.true由于矩形和矩阵的大小,中心单元始终是,并且始终位于矩形内部.
附加要求是矩形和中心单元的左上角之间的距离必须尽可能小.
带n=8和的示例m=5:

灰色细胞占据,绿色 - 中心细胞,蓝色细胞 - 解矩形,红线 - 矩形左上角和中心细胞之间的距离.
尝试
暴力解决方案将具有O(N×M×n×m)时间复杂度,这不是非常优化的.如果我预处理矩阵,我可以消除某些单元格中的计算,但这仍然会花费太多时间.
最初我认为我可以采取Max Rectangle问题并且只是将条件从max修改为需要,但是它进入了死胡同(我需要列出直方图中的所有矩形,我不知道如何).然后我认为它就像打包问题,但我能找到的只是它的版本,最初是完全空的空间和多个矩形,这不适用于这个问题.
上下文
在过去,当用户点击网格时,我的程序会放置矩形,左上角与点击点重合,如果它是空的,如果它已经占用了矩形所在的单元格则会失败.我决定修改这种行为,而不是失败,找到最合适的矩形位置,同时仍然包含一个点击点.在上面的矩阵pic中,单击点是绿色单元格,矩阵大小表示矩形的所有可能位置.
PS如果可能的话,我更喜欢真实的语言示例而不是伪代码.我的程序是用Java编写的,但任何语言都可以.
cv2.rectangle 有两种调用方式:
来源:https : //docs.opencv.org/4.1.2/d6/d6e/group__imgproc__draw.html#ga07d2f74cadcf8e305e810ce8eed13bc9
我称矩形如下:
cv2.rectangle(img=cv2_im, pt1=a, pt2=b, 颜色=(0, 255, 0), 厚度=3, lineType=cv2.LINE_AA)
错误信息:
cv2.rectangle(img=cv2_im, pt1=a, pt2=b, color=(0, 255, 0), depth=3, lineType=cv2.LINE_AA) TypeError: rectangle() 缺少必需的参数 'rec' (pos 2) )
我不明白为什么应用程序试图调用该方法的重载版本。U 明确定义版本 1 调用。我尝试使用 (x,y) 等更改变量 a 但它不起作用。正确的方法调用仅在我第一次调用 retangle() 时有效,之后它希望我使用它的重载版本。
opencv-contrib-python 4.1.2.30
imgname='fly_1.jpg'
im = Image.open(imgname)
cv2_im = …Run Code Online (Sandbox Code Playgroud)我已经使用 pygame 在 python 中启动了一个新项目,对于背景,我希望下半部分填充灰色,顶部填充黑色。我以前在项目中使用过矩形绘图,但由于某种原因它似乎被破坏了?我不知道我做错了什么。最奇怪的是,每次运行程序的结果都不一样。有时只有黑色屏幕,有时灰色矩形覆盖屏幕的一部分,但永远不会覆盖屏幕的一半。
import pygame, sys
from pygame.locals import *
pygame.init()
DISPLAY=pygame.display.set_mode((800,800))
pygame.display.set_caption("thing")
pygame.draw.rect(DISPLAY, (200,200,200), pygame.Rect(0,400,800,400))
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
Run Code Online (Sandbox Code Playgroud) rectangles ×10
algorithm ×2
geometry ×2
java ×2
python ×2
awt ×1
bounding-box ×1
boxplot ×1
c# ×1
grid ×1
javascript ×1
math ×1
matrix ×1
opencv ×1
overloading ×1
plot ×1
pygame ×1
r ×1
rotation ×1
shape ×1
transparent ×1
xna ×1