[MATLAB]:我如何从数学和视觉上再现新国王的3D表面';s十字';西区广场';?

[MATLAB]:我如何从数学和视觉上再现新国王的3D表面';s十字';西区广场';?,matlab,3d,geometry-surface,Matlab,3d,Geometry Surface,有人给我一些开始的建议吗?我想从中吸取教训(不想偷懒,让别人替我回答) 我想发展我对数学3D曲面的理解。我个人的项目是在MATLAB中生成广场结构的3D曲面/图形 我找到了一个链接,上面有很好的几何图形。我不期望它100%完美,但我想接近 在本练习结束时,我希望获得几何体的数学定义以及曲面的视觉表示。这可能涉及笛卡尔方程、参数方程、矩阵等 任何帮助都将不胜感激 首先,我要定义一个函数,定义每个x,y坐标是否有一个点z,如果有,用哪个高度 这个形状让我想起了一点对数或平方根。给MATLAB一些具体

有人给我一些开始的建议吗?我想从中吸取教训(不想偷懒,让别人替我回答)

我想发展我对数学3D曲面的理解。我个人的项目是在MATLAB中生成广场结构的3D曲面/图形

我找到了一个链接,上面有很好的几何图形。我不期望它100%完美,但我想接近

在本练习结束时,我希望获得几何体的数学定义以及曲面的视觉表示。这可能涉及笛卡尔方程、参数方程、矩阵等


任何帮助都将不胜感激

首先,我要定义一个函数,定义每个x,y坐标是否有一个点z,如果有,用哪个高度


这个形状让我想起了一点对数或平方根。

给MATLAB一些具体建议:

我将从您链接的网页中加载“section”图像,并将其显示在MATLAB图形窗口中。然后,您可以尝试在顶部绘制线,直到找到一条非常适合的线。所以你可以做一些类似的事情:

A = imread('~/Desktop/1314019872-1244-n364-1000x707.jpg');
imshow(A)
hold on
axis on

%# my guess at the function - obviously not a good fit
x = [550:900];
plot(x, 0.0001*x.^2 + 300)  

当然,您可能需要移动原点的位置或裁剪图片等

作为这种试错法的一种更好的替代方法,您可以跟踪该部分的轮廓(例如通过单击类似的点),然后使用MATLAB的工具之一(例如)将函数拟合到数据中

最终的3D形状在我看来(随便一看)是截面形状围绕中心轴的3D旋转。因此,使用a是一个好主意


3D形状的最终绘图可以使用诸如或之类的函数完成。

我不确定目标是什么-您是以图像为参考,以代数方式手动建模曲面函数,还是在寻找可以从图片推断3D结构的计算机视觉技术?在第二种情况下,如果您知道(或可以近似地知道)每个图片中相机的位置和方向,您可以尝试。它有一些限制,但在理论上它可能会工作。谢谢你的评论!也许我原本应该包括,在获得正确的几何体后(在笛卡尔三维曲面函数的情况下),我接下来要做的是将一组点(x,y)垂直(z)投影到三维曲面上。我想我在想你的第一个解决方案。。。但是你的第二个解决方案听起来很有趣!但我主要想要一个结构的数学模型/定义,它允许我在MATLAB中灵活地编程。出于兴趣。。。我的下一步是使用遗传算法按照相同的形式生成不同的结构!恢复的函数实际上是1D,y=f(x),x是距离中心的距离。然后,该函数可以围绕垂直轴来获得屋顶形状。感谢Junuxx不辞辛劳地拟合横截面曲线。这是一个很大的帮助。我同意它应该围绕垂直轴进行车削(我用SketchUp做了一些实验,只是为了发展思路)。问题是它的底部不是一个简单的半圆。。。例如,它似乎在曲线的顶端旋转得更多,而在底部旋转得更少<代码>y=33*log(x)-1.0*x+0.00162*x**2+24.*2.71**(-x-145)**2/(80.*2))曲线最左侧点为0,0。谢谢比尔。我对大多数MATLAB函数都是新手,因为我只知道以前使用过的少数函数。我认为,我的主要问题是不知道我可以使用哪些工具。你的投入在这方面对我帮助很大。我同意圆柱坐标系是一种可行的方法。这个广场形式的问题在于,它的底部只围绕一个非常小的半圆部分旋转,而顶部则围绕一个完整的半圆旋转(这有意义吗!?)。您可以注意到,基础杆件几乎沿直线附着到地面,而不是半圆。