基本上,从程序上讲,给出一个房间天花板的4个3D坐标,以及天花板上方水管的3对3D坐标,我要计算一下,如果每个喷头距离墙壁和彼此都有2500毫米的话,我可以在天花板上安装多少喷头。
我可以写出程序,但问题是我不知道这是如何计算出来的。
问题是:
计算喷头的数量,它们在房间天花板上的位置,并将每个喷头连接到最近的水管上。这个房间是长方形的。上限坐标(x,y,z)是:
(97500.00, 34000.00, 2500.00)
(85647.67, 43193.61, 2500.00)
(91776.75, 51095.16, 2500.00)
(103629.07, 41901.55, 2500.00)有三条水管:
(98242.11, 36588.29, 3000.00) to (87970.10, 44556.09, 3500.00)
(99774.38, 38563.68, 3500.00) to (89502.37, 46531.47, 3000.00)
(101306.65, 40539.07, 3000.00) to (91034.63, 48506.86, 3000.00)喷头将放置在天花板上,距离墙壁2500毫米,彼此之间。
请计算一下可以安装在这个房间里的喷头数量,然后计算。
每个喷头的坐标(x,y,z)。
对于每个喷头,计算最近水管连接点的坐标(x,y,z)。
现在我知道两个三维点之间的距离公式是d = sqrt((x2-x1)^2 + (y2-y1)^2 + (z2-z1)^2)。
但是我不知道怎么用这个来计算喷头的数量。或者如何计算他们在水管上的交点。如果我能计算出他们在每个管道上的交点以及从那个点到每个喷头的距离,那么最近的管道就会很明显,那就是洒水器连接到的管道。
我必须使用c#和dotnet框架编写这篇文章。但是,我能不能得到一些帮助,把它变成伪码,并理解如何处理、处理和计算这个问题?我不擅长这方面的数学问题,但希望一旦了解了如何解决这个问题,我就可以将它放入一个c#函数中。
发布于 2022-06-27 10:11:53
这个问题非常详细,即使在伪代码中,这也是一件大事。
您可以从重新校准矩形开始(实际上,您提供的四个坐标实际上是一个矩形):移动整个矩形,使一个点等于(0,0)。您旋转矩形以使矩形具有以下坐标:
(0,0)
(Xmax, 0)
(0, Ymax)
(Xmax, Ymax)一旦你有了这个,你可以开始寻找你的算法填补天花板喷头。首先,您可以基于以下“算法”:
完成此操作后,您可以升级到以下“算法”:
将一切恢复到原始坐标(向后旋转和向后移动)。
一旦你有了这个,你可以开始计算到管道的距离,使用基本的“点到线之间的距离”公式。
发布于 2022-06-27 11:50:16
注意,天花板可以用侧面2500毫米的4x6方格平铺。告诉你喷头的数量。
你可以通过计算长度2500毫米的向量来找到他们的位置,与边平行(第一次计算单位向量)。使用矩阵排列获得坐标并不太困难。
接下来,计算每个喷头到三个管道的距离,并保持最短。(注意:与线段之间的距离,而不是到支撑线的距离。)
https://stackoverflow.com/questions/72769914
复制相似问题