Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如果任意两个单元之间的两个随机点相连,如何确定哪些网格单元将与中心单元相交_Algorithm_Math_Cell_Intersection_Line Segment - Fatal编程技术网

Algorithm 如果任意两个单元之间的两个随机点相连,如何确定哪些网格单元将与中心单元相交

Algorithm 如果任意两个单元之间的两个随机点相连,如何确定哪些网格单元将与中心单元相交,algorithm,math,cell,intersection,line-segment,Algorithm,Math,Cell,Intersection,Line Segment,我有一个数学难题/问题 在3 x 3网格的情况下,如果要连接两个相邻单元内的两个随机点,如何确定哪些线将与中心单元相交。邻居由(网格大小-1)/2=1定义,其中网格大小为3或sqrt(单元计数)。 例如,单元格1和单元格3是相邻的,直线将与中心单元格相交。单元格0和8与2个单元格不同 因此,在3x3的情况下,在以下单元格的点之间绘制的线将与中心单元格相交:1-3、1-5、7-3、7-5 现在有了5x5网格,事情变得更复杂了。因为(网格大小-1)/2=2,其中网格大小为5或sqrt(单元计数),

我有一个数学难题/问题

在3 x 3网格的情况下,如果要连接两个相邻单元内的两个随机点,如何确定哪些线将与中心单元相交。邻居由(网格大小-1)/2=1定义,其中网格大小为3或sqrt(单元计数)。 例如,单元格1和单元格3是相邻的,直线将与中心单元格相交。单元格0和8与2个单元格不同

因此,在3x3的情况下,在以下单元格的点之间绘制的线将与中心单元格相交:1-3、1-5、7-3、7-5

现在有了5x5网格,事情变得更复杂了。因为(网格大小-1)/2=2,其中网格大小为5或sqrt(单元计数),所以将相邻单元视为距离中心单元2步。 下列单元格中的线将与中心单元格相交:

2-11、2-13、7-10、7-11、7-13、7-14、17-10、17-11、17-13、17-14、22、11、22-13、6-13、6-17、6-18、7-16、7-17、7-18、8-11、8-17、11-13、11-18、16-13、1-13、3-11、5-17、7-15、7-19、9-17、11-23、13-21

编辑以澄清:

在单元格中,我从当前单元格中的一个点到周围5 x 5网格(粉红色)相邻单元格中的点绘制直线。在单元格中,我还需要考虑相邻单元格之间绘制的任何相交线(绿色)

我可以在单元格(灰色)中迭代所有单元格和行,但这将是低效的

理想情况下,我只绘制/计算与单元格相交的线

片段着色器的一部分:

#在5x5网格中定义C 25//单元格
#定义t2//移位大小sqrt(C)-1
#定义X 12//中心单元(C-1)/2
#定义NP(2,11,2,13,7,10,7,11,7,13,7,14,17,10,17,11,17,13,17,14,22,13,6,13,6,17,6,18,7,16,7,17,7,18,8,11,8,16,17,11,18,16,13,1,13,3,11,5,17,7,15,19,9,17,11,23,13,21)
//细胞
vec2 id=楼层(st)+n;
st=分形(st)-.5;
vec2p[C];
int i=0;

对于(float y=-T;y快速思考:如果两点的x坐标都位于中心正方形的左侧,则直线不相交。如果两个x坐标都位于右侧,则它们也不相交,如果两个y坐标都在顶部或底部以下,也不相交。在所有其他情况下,它们相交(?).

在第一个示例中,可以在单元格
1
3
中选择点,使直线与中心单元格相交,但也可以选择这样的点,使直线不相交。您如何区分?您确实需要澄清您的问题。您是否询问是否存在点in两个单元格之间的线段与中心单元格中的任何点相交?例程是否给定网格大小和两个单元格编号,然后根据这一点返回真/假,还是仅给定单元格大小并返回所有这些单元格编号对的数组,或其他?您是否在询问想法、算法或其他信息代码?等等。行从哪里开始?嗨,Rory,编辑原始帖子以澄清是的。我想我需要将单元格视为XY坐标而不是计数,然后规则/模式似乎出现了。谢谢!