Algorithm 从一维投影重建二维形状

Algorithm 从一维投影重建二维形状,algorithm,math,geometry,computational-geometry,differential-equations,Algorithm,Math,Geometry,Computational Geometry,Differential Equations,我在二维空间(x-y平面上)有一个凸的闭合形状。我不知道它看起来像什么。我将此形状大约围绕其边界框的中心旋转64次,旋转5.625度(360/64)。对于每个旋转,我都有形状的极值点的x坐标。换句话说,我知道每个旋转的形状的左右x范围(假设正交投影)。如何在形状上获得与x投影不矛盾的64个点。 请注意,二维图形正在旋转,但坐标轴不会随之旋转。因此,如果您的对象是一条直线,则绘制的每一端的x投影将基本上是一个正弦波/余弦波,具体取决于其原始方向 旋转次数越高,如果我有解决方案的话,我就越接近我的实

我在二维空间(x-y平面上)有一个凸的闭合形状。我不知道它看起来像什么。我将此形状大约围绕其边界框的中心旋转64次,旋转5.625度(360/64)。对于每个旋转,我都有形状的极值点的x坐标。换句话说,我知道每个旋转的形状的左右x范围(假设正交投影)。如何在形状上获得与x投影不矛盾的64个点。 请注意,二维图形正在旋转,但坐标轴不会随之旋转。因此,如果您的对象是一条直线,则绘制的每一端的x投影将基本上是一个正弦波/余弦波,具体取决于其原始方向

旋转次数越高,如果我有解决方案的话,我就越接近我的实际形状


事实上,我不知道旋转形状的确切点,但是,假设我知道,任何解决方案都会有帮助,因为我不介意重建不完美。

我们使用直接方法重建

投影是对象的阴影

从边界二维框开始。对于每个投影,从二维图形中剪切掉位于投影之外的左右部分。因此,主函数计算两个凸面2D形状的交点。计算每个投影的交点

我们有几个原始绿色对象的紫色投影P1、P2、P3、P4:

知道紫色投影的位置,从投影的端点生成两条红色光线,并将其与重建对象相交:

用4个投影重建红色物体。与原始绿色相比,您可以看到它们不一样。投影越多,最终结果中的误差就越小


它是透视投影还是正交投影?是否围绕具有已知坐标的固定点旋转?对于每一次旋转,你会得到两个坐标(左和右),还是只有长度?如果你绕一个轴旋转,并且只得到极限坐标,你将永远无法完全重建形状:你将得到的只是一个边平行于旋转轴的边界棱镜。你有两种选择:考虑多边形轮廓,或者用两个角度旋转。尤维斯:他正在观察二维空间中的形状(并围绕一个点旋转)。根据所述形状为凸形且闭合的限制条件,当且仅当点位于[0,2*PI]中所有旋转角度的一维投影内时(无论哪个点是旋转的中心),证明点位于形状内是非常容易的。要证明这一点,请找到将整个形状放置在问题点左侧(或右侧)的任何旋转。假设形状外部的某个点不可能这样做,将导致与形状为凸形的矛盾。感谢您的回答-但x投影仅在x轴上。x轴不旋转。2D形状旋转,但坐标轴不随x轴旋转。因此,如果你的物体是一条直线,那么画出的每一端的x投影基本上是一个正反方向的波,这取决于它的原始方向。回答得好,这是一个很好的问题。@gayathrichittiappa,这个问题不太清楚。关于每个投影,您知道哪些信息?它仅仅是物体旋转的角度和
Xmin
Xmax
轴上投影的坐标吗?没有别的了吗?更具体地说,你知道物体旋转所围绕的点的坐标吗?没有别的。在我的实际情况下,我不知道物体旋转所围绕的坐标。但也许我可以假设我们是围绕第一个投影和第十七个投影的中心定义的x和y旋转,另一个选项是假设我们是围绕原点(0,0)旋转,这与我的问题不同。我试图找到一个不需要知道旋转中心是什么的解决方案。。但不确定这是正确的方法