我应该保留一些解剖难题并搜索它以找到它的解决方案。 搜索和知情搜索。我应该找到一个很好的启发式。
用什么智能数据结构来表示这个解剖拼图的各个部分?我的解剖拼图就像这些图片:http://www.ics.uci.edu/~eppstein/junkyard/2-6-9-11.gif
答案 0 :(得分:0)
在使用OpenGL时,由于图形的影响以及对象的表示方式,我会创建一组所有线段(边缘),每个线段都有一个名为(顶点)的(x,y)端点列表和一个唯一的指示符为了这个优势:
edge followed by its (x,y) vertices
____ ____________________________________
0 (2,3) (3,7)
1 (3,9) (11,9)
2 (22,9) (22,7)
... ....
然后单独地,对于拼图的每个不规则形状,定义边界列表,其定义其边界
shape list of edges which define its boundary
____ _________________________________________
0 3, 1, 5, 8
1 7, 2, 4, 10, 4, 20
因此在上面的示例中,形状编号0(拼图块)由四条边定义:3,1,5,8,因此将是一个四边形对象(每边都是边缘)
边缘1由其线段两端的(x,y)端点定义(所有边缘只有两个端点),例子中它们的x和y值为(2,3)和(3,7) )
为了保持我们的理智,拼图对象是通过沿逆时针方向绕着拼图块周边定义的边缘列表(或者只要你的一致就顺时针方向)。