问题标签 [tiling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
10010 浏览

android - 在画布上平铺位图

我想为我通过画布绘制的位图创建一个“方格纸”外观,并试图找出最好的方法来做到这一点。

我无法将包含方格纸背景的源位图传递给 Canvas 构造函数,因为我正在通过 .lockCanvas() 调用在 SurfaceView 中获取 Canvas。

我尝试过的一些解决方案:

  • 我已经尝试在我的 SurfaceView 的 Thread.run() 中实现此解决方案,但我认为问题是当 BitmapDrawable 转换为位图时......它会失去平铺属性。

    画布 = mSurfaceHolder.lockCanvas(null); BitmapDrawable TileMe = new BitmapDrawable(BitmapFactory.decodeResource(getResources(), R.drawable.editor_graph)); TileMe.setTileModeX(Shader.TileMode.REPEAT); TileMe.setTileModeY(Shader.TileMode.REPEAT);

    位图 b = TileMe.getBitmap(); canvas.drawBitmap(b, 0, 0, null);

  • 如果我使用将目标 RectF 作为参数的 Canvas.drawBitmap 方法,看起来位图将被平铺以填充 RectF...但是如何可靠地声明填充整个视图区域的 RectF?

  • 将活动背景设置为所需的方格纸外观也不起作用,因为位图/画布布局是不透明的,并且会阻止被看到。

任何想法如何实现这一目标?

0 投票
2 回答
1810 浏览

algorithm - 计算表格布局的最佳列数 - 仅给定表格宽度和矩形列表

我有一个不同尺寸的矩形列表。

rects = [100x20, 30x10, 10x10, 70x20, 40x30, 50x10]

我正在尝试从这些矩形中呈现一个表格。如果我有固定数量的列,我可以简单地计算行数以及每行和每列的大小,如下所示:

现在我希望我的表格由最大行宽配置。列数取决于最佳行宽的运行时计算。

使用上面的列表和设置为 140 的最大行,我希望我的表是:

我处理这种情况的第一个想法是为每个可能的列数缓存最大列宽。然后最后一个总和 <= 最大行宽的条目获胜。

不幸的是,我需要为每个可能的列号创建一个 max 条目。该列表可能会变得非常大。有人知道解决这个优化问题的算法吗?

0 投票
5 回答
5122 浏览

algorithm - 计算用两种瓷砖尺寸建造墙壁的方法

给你一组积木,用 3”×1” 和 4.5”×1” 积木搭建一个面板。

为了结构完整性,块之间的空间不得在相邻行中排列。

7.5”×1”面板有2种方式,7.5”×2”面板有2种方式,12”×3”面板有4种方式,27”×5”有7958种方式“ 控制板。构建 48”×10” 面板有多少种不同的方法?

这是我目前所理解的:

3 x 14.5 x 1

我使用组合公式来找到两个块可以排列在这种大小的面板中的所有可能组合

C = 选择 --> C(n, k) = n!/r!(nr)! 一次在 r 处组合 n 组

面板:7.5 x 1 = 2 种方式-->

1(3 x 1 块)和 1(4.5 x 1 块)--> 仅使用 2 个块--> 2 C 1 = 2 路

面板:7.5 x 2 = 2 路

我在这里也使用了组合

1(3 x 1 块)和 1(4.5 x 1 块)-> 2 C 1 = 2 路

面板:12 x 3 面板 = 2 种方式-->

2(4.5 x 1 块)和 1(3 x 1 块)-> 3 C 1 = 3 路

0(4.5 x 1 块)和 4(3 x 1 块)-> 4 C 0 = 1 路

3 种方式 + 1 种方式 = 4 种方式

(这是我感到困惑的地方)

面板 27 x 5 面板 = 7958 种方式

6(4.5 x 1 块)和 0(3 x 1)--> 6 C 0 = 1 路

4(4.5 x 1 块)和 3(3 x 1 块)-> 7 C 3 = 35 路

2(4.5 x 1 块)和 6(3 x 1 块)-> 8 C 2 = 28 路

0(4.5 x 1 块)和 9(3 x 1 块)-> 9 C 0 = 1 路

1 路 + 35 路 + 28 路 + 1 路 = 65 路

正如您在此处看到的,方法的数量远不及 7958。我在这里做错了什么?

另外,我如何找到构建 48 x 10 面板的方法?因为手工操作有点困难,尤其是在尝试找到 7958 方法时。

如何编写程序来计算 7958 面板的方法数的答案?构建一个程序来计算结果会更容易吗?任何帮助将不胜感激。

0 投票
2 回答
11274 浏览

matlab - 通过多次合并相同的行向量来构建矩阵

是否有允许我执行以下操作的 matlab 函数?

x = [1 2 2 3];

然后基于x我想建立矩阵m = [1 2 2 3; 1 2 2 3; 1 2 2 3; 1 2 2 3]

0 投票
1 回答
2031 浏览

optimization - 如何在 gcc 中启用循环平铺?

如何使用执行循环平铺(阻塞)的 gcc 编译代码?默认情况下,-O3 优化不执行循环平铺。我需要在这个标志中启用循环平铺,并找出平铺因素。(例如立方平铺或矩形平铺)即内部平铺启发式。

谢谢

0 投票
3 回答
3300 浏览

c# - 在 C# 中使用 TextureBrush 从不同高度开始平铺图像的问题

我正在尝试使用 TextureBrush 在尺寸宽度 = 1000、高度 = 16 的矩形区域上平铺图像(16x16)以获得类似 UI 的条带。

当我用 x=0 绘制时,y=0 平铺按预期从 (0,0) 开始发生。

当我用 x=0 绘制时,y=50 平铺从 (0,50) 开始,但绘画矩形不是从图像的开头开始的。它从图像的裁剪部分开始,然后重复。

如何解决这个问题?

PS:我不想在 DrawImage 上重复手动循环平铺它。

0 投票
5 回答
8179 浏览

algorithm - 推广多米诺平铺算法?

这个较早的问题中,OP 提出了以下问题:

给定一个矩形网格,其中一些正方形是空的,一些是填充的,可以放置到世界中的 2x1 多米诺骨牌的最大数量是多少,使得没有两个多米诺骨牌重叠并且没有多米诺骨牌位于填充正方形的顶部?

这个问题的(非常漂亮!)答案认识到这相当于在特殊构造的图中找到最大二分匹配。在该图中,每个空方格都有一个节点,该节点通过一条边链接到它的每个邻居。然后,每个多米诺骨牌对应于图中的一条边,这样它的端点就不会被任何其他边覆盖。因此,任何不共享顶点(匹配)的边集都对应于多米诺骨牌的排列,反之亦然。

我的问题是对早期问题的概括:

给定一个矩形网格,其中一些正方形是空的,一些是填充的,可以放置到世界中的最大数量的 M x N 多米诺骨牌(对于给定的 M 和 N)是多少,使得没有两个多米诺骨牌重叠并且顶部没有多米诺骨牌一个填充的正方形?

我看不到如何将其转换为匹配问题,就像在前一个案例中所做的那样。但是,我也没有看到为什么这个问题会立即成为 NP-hard 的任何特殊原因,因此该问题可能存在多项式时间解决方案。

有没有解决这个问题的有效算法?或者有没有人有减少表明这个问题是NP难的?

非常感谢!

0 投票
1 回答
2076 浏览

iphone - 在 UIVIew 中平铺图像

我正在尝试为我正在制作的应用平铺图像。我正在制作可以设置长度的绳索。为了做到这一点,我有一个函数来获取我的绳索长度,相应地设置帧大小,然后像这样设置背景颜色:

(图片是一个UIView

视图是空白的。我之前通过将图片设置为 UIImageView 来显示图像来测试它,它可以工作,但它不会再显示了。

编辑: 我现在尝试了几种不同的平铺方法,我能得到的最好的方法是拉伸图像。我需要一种工作方式来平铺图像并将平铺图像的输出转换为UIImageUIImageViewUIView.

0 投票
1 回答
330 浏览

objective-c - iPhone4 iOS5 自定义历史 UITableViewCell [图片包含] 可以吗?

我正在尝试为我的应用程序添加一种以易于理解的形式显示数据的方式。我尝试用图表来做这件事,但发现它有点尴尬,所以我要去寻找更好的解决方案。

这里有一个问题:我想显示最多 30 天的数据,并根据时间线绘制用户报告的事件。事件应垂直对齐,以直观地提供某些事件何时聚集在一起的参考。

为了解决这个问题,我想到了使用具有比例背景的 UITableView,并在该背景上叠加一组“pins”,指示用户事件。随着表格的滚动,事件将一个接一个地排列在一起,很好地表明了历史事件的发展: 带有指示用户事件的引脚的自定义 UITableViewCell

我知道这可以通过 UIScrollView 来完成,我可以在其中定位一系列标尺并将事件添加为引脚。为了有效地做到这一点,我将不得不使用平铺,这是一种我没有太多经验的技术。

我很想知道这是否可以通过 UITableView 实现,其中缓存和平铺已经为我完成。

我尝试将 UIImageViews 添加到 tableViewCell.backgroundview ,但这不会产生预期的结果。我希望能够动态地将任意数量的子视图添加到表格单元格中。我可以通过向 .xib 添加一定数量的图像然后尝试重新定位它们来做到这一点,但这似乎不是一个理想的解决方案。

我正在尝试使用 UITableView 做什么,还是应该放弃这些努力并使用平铺查看 UIScrollView?

谢谢!

0 投票
1 回答
1561 浏览

php - 使用 PHP GD 平铺图像

我正在尝试平铺多张图像,即将一张直接放在另一张下面。它们都具有相同的宽度(120 像素)和不同的高度。

这就是我所拥有的:

尺寸输出正确,但它一直告诉图像包含错误,我不知道为什么:(如果我尝试输出 addbg 或 newbg 也是一样。

谢谢。