- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个具有以下结构的 MySQL 表:
CREATE TABLE IF NOT EXISTS `np_voxels` (
`world` VARCHAR(16) NOT NULL,
`x` INT NOT NULL,
`y` INT NOT NULL,
`z` INT NOT NULL,
`value` DOUBLE NOT NULL DEFAULT 0,
`property_id` INT NULL,
PRIMARY KEY (`world`, `x`, `y`, `z`) ,
INDEX `np_fk_voxels_properties_idx` (`property_id` ASC) ,
CONSTRAINT `np_fk_voxels_properties`
FOREIGN KEY (`property_id`)
REFERENCES `np_properties` (`property_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
我想要两个选择查询,它们可以在给定匹配特定条件的起始体素的情况下找到所有连接的体素。一个 WHERE world = @world AND value > @minvalue AND property_id IS NULL
,另一个 WHERE world = @world AND property_id = @property_id
。使用的洪水填充算法应该足够快,不会导致明显的延迟(这将在游戏服务器上使用)。还应该有一个以起始体素为中心的边界框,查询不能超出该边界框。在 y
轴上,这将从 0
到 @ymax
。默认值为 31
。对于 x
和 z
轴,这应该从起始 x
或 z 延伸出
.@hdistance
输入
@world
@startx
@starty
@startz
@minvalue
或 @property_id
(取决于程序要查找的内容。)@hdistance
默认值:13
@ymax
默认:31
我在 Google 上搜索过,但没有找到 MySQL 中现有的实现。我不明白更快、更复杂的洪水填充算法如何工作来尝试自己编写这个。
最佳答案
快速洪水填充不应在 SQL 中实现。您可以将所有需要的数据加载到应用程序中,以适当的结构(可能是一些图形表示或 3d 数组,具体取决于数据的密度),并运行堆栈/队列或您可以用现有编程语言编写的任何其他实现。根据定义,Flood-fill 是递归的(即使它经常通过循环实现),而 SQL 不擅长递归,也不擅长循环。
但是有一些东西可以在 mysql 中使用,即使它不是一个正常的 SQL 解决方案。有一个特殊的引擎来处理图形 - OQGRAPH 。它在 MariaDB 中可用,并且可能可以安装到 MySQL。
它支持组合图的有效存储,其中网格只是一个特例,它可以计算最短路径和可达性。从示例页面中它知道 dijkstras
和 breadth_first
- 后者应该可用作洪水填充实现。
根据您的需求,您应该能够编写性能更高的东西,因为您可以根据您的特定需求对其进行定制。但如果你想尝试和比较更多的实现,你可以尝试一下。
关于MySQL 3D "Flood Fill"实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32812279/
我正在编写一种填充方法,用红色填充图像(狗的轮廓)。 在我的 TestShellDlg.cpp 中是洪水填充方法。 CTestShellDlg::m_pScreenDib 成员是一个 CDIB32 位
如果我尝试填充一个 100x100 的矩形,则会出现溢出。50x50 效果很好。 有没有办法解决溢出问题? 我还打印出 Stack Number,有时工作矩形 Stack 比大的 Stack 高(它在
游戏链接在这里: http://floodit.appspot.com/ 规则很简单,你必须从邻居中选择一种颜色,起点是左上角,然后颜色发生变化,你就淹没了更多的区域。目标是淹没整个网格。 stack
我正在使用 Java 开发一个小型绘图应用程序。我正在尝试通过实现 Flood Fill 算法来创建“桶填充”工具。 我尝试使用递归实现,但这是有问题的。不管怎样,我在网上搜索了一下,似乎为此目的,建
题目地址:https://leetcode.com/problems/flood-fill/description/ 题目描述 Animage is represented by a 2-D ar
def getRegionSize(cell, world): region = [] frontier = [cell] val = world[cell[0]][cell[
我必须找出阻碍交通的下雨阈值。 所以,我必须打印降水阈值来阻止交通。 例如) 3 3 0 1 2 1 2 3 0 2 6 输出:3 这个问题有什么好的算法或者关键词吗? 谢谢 最佳答案 找到一棵具有最
我有 N × M 个网格,其中每个单元格都用一种颜色着色。 当玩家点击颜色为 α 的网格中的任何单元格时,网格最左上角的颜色为 β 的单元格会接收到颜色 α,但不仅如此:所有连接到的单元格仅使用颜色
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 2 年前。 Improve this qu
我正在开发一个 Paint 应用程序,其中我正在实现类似于 MS Paint 应用程序的 BucketFill 功能。 我已经使用几种 FloodFill 算法对其进行了编码,但是填充颜色过程花费了太
我有一个 C# 应用程序,旨在使用线程在我的服务器中发出 http post 请求。 (这是为了简化问题,因为事实上,有几个不同的trheads在不同的URI上发出请求) 事实证明,这些踏板被设置为在
我正在尝试使用洪水填充来清理扫雷游戏中的开放区域。我做了一个简单的洪水填充函数,但我不断收到堆栈溢出错误代码 public void revealEmpty(int givenIndex){
我有一个具有以下结构的 MySQL 表: CREATE TABLE IF NOT EXISTS `np_voxels` ( `world` VARCHAR(16) NOT NULL, `x`
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 关闭 5 年前。 编辑问题以包含 desired behavior, a specific proble
我正在为 python 扫雷器实现一个 flood-fill 算法。 在我展示算法之前,让我定义一些重要的东西: BOARD,打印漂亮时,看起来像这样: X 1 1 1 3 X 2 1 2 X 2
我正在尝试使用 flood fill算法在列表中找到所有相似的相邻对象,并将它们标记为删除。我试图改编维基百科上的伪代码,但卡住了。 列表中的每个对象都有一个 int X 值、一个 int Y 值、一
我正在使用 Java 编写一个简单的绘图应用程序。我正在尝试使用 Flood Fill 算法的递归实现作为我的“桶填充”工具。 但是,这总是给我一个StackOverFlowError。 (无论我使用
我正在尝试制作 Flood-It 风格的游戏,但我遇到了主要算法的问题。 该算法会检查您已经控制的每个方 block ,并找到具有您无法控制的所选颜色的相邻方 block 。 变量: 1 - $boa
我正在寻找最有效的解决方案,有很多方法可以从套接字读取数据和解码 json。我显然应该使用 json.Encoder 和 json.Decoder,因为它们适合套接字的流式处理,但我有防止套接字泛滥的
我正在编写一种填充方法,用红色填充图像(狗的轮廓)。 在我的 TestShellDlg.cpp 中是洪水填充方法。 CTestShellDlg::m_pScreenDib 成员是一个 CDIB32 位
我是一名优秀的程序员,十分优秀!