Matlab中圆锥螺旋线在圆锥上的投影?

Matlab中圆锥螺旋线在圆锥上的投影?,matlab,math,geometry,Matlab,Math,Geometry,假设您有f(x)=x层(x) 通过这种方式,您可以通过粘合顶部和底部来生成凹槽 底部一起,然后向左挤压到零——现在 有一个圆锥形螺旋线:线围绕圆锥体旋转,直到它碰到圆锥体 底部。你们已经有了圆锥曲线的一种形式的方程 螺旋即x=a*cos(a);y=a*sin(a);z=a。现在喜欢 : 如何在Matlab中将圆锥螺旋投影到圆锥上? 我不会使用plot3,而是使用and来解决您的问题。请注意,sinc是一个matlab内置函数,只执行sin(x)。/x,例如: 因此,在一维中,如果我理解正确,

假设您有
f(x)=x层(x)

通过这种方式,您可以通过粘合顶部和底部来生成凹槽 底部一起,然后向左挤压到零——现在 有一个圆锥形螺旋线:线围绕圆锥体旋转,直到它碰到圆锥体 底部。你们已经有了圆锥曲线的一种形式的方程 螺旋即
x=a*cos(a);y=a*sin(a);z=a
。现在喜欢 :

如何在Matlab中将圆锥螺旋投影到圆锥上?


我不会使用
plot3
,而是使用and来解决您的问题。请注意,
sinc
是一个matlab内置函数,只执行
sin(x)。/x
,例如:

因此,在一维中,如果我理解正确,您希望在
sqrt(x.^2)
上“投影”
sinc(x)
。你的问题是你提到了点积的投影,但是点积减少了维数,所以两个向量的点积给出了一个标量,两个二维曲面的点积给出了一个向量,所以我不明白你的意思。从你添加的二维图中,我将这个问题解释为一个功能与另一个功能“搭配”,就像另外

以下是实现:

N=64;
[x y]=meshgrid(linspace(-3*pi,3*pi,N),linspace(-3*pi,3*pi,N));
t=sqrt(x.^2+y.^2);
f=t+2*sinc(t);

subplot(1,2,1)
mesh(x,y,f) ;      axis vis3d

subplot(1,2,2)
mesh(x,y,f)
view(0,0) ;  axis square
colormap bone


sinc
中的
2
因子放置在
sinc
中,以便更好地可视化
sinc
的波动我不会使用
plot3
,而是使用and。请注意,
sinc
是一个matlab内置函数,只执行
sin(x)。/x
,例如:

因此,在一维中,如果我理解正确,您希望在
sqrt(x.^2)
上“投影”
sinc(x)
。你的问题是你提到了点积的投影,但是点积减少了维数,所以两个向量的点积给出了一个标量,两个二维曲面的点积给出了一个向量,所以我不明白你的意思。从你添加的二维图中,我将这个问题解释为一个功能与另一个功能“搭配”,就像另外

以下是实现:

N=64;
[x y]=meshgrid(linspace(-3*pi,3*pi,N),linspace(-3*pi,3*pi,N));
t=sqrt(x.^2+y.^2);
f=t+2*sinc(t);

subplot(1,2,1)
mesh(x,y,f) ;      axis vis3d

subplot(1,2,2)
mesh(x,y,f)
view(0,0) ;  axis square
colormap bone


sinc
中的
2
因子放置在
sinc
中是为了更好地可视化
sinc

的波动,我想你是在寻找
1./(t.*sin(t))
而不是
sin(t)。/t
?按照你编写这个表达式的方式,Matlab会将它解释为后一个表达式。@zplesivcak也许,我还不知道——我试图理解如何首先扭曲圆锥体的表面,即添加波动项。我喜欢把它看作是沿着曲面的投影,但我需要找出曲面在每个点上的法向量,思考。也许我觉得这太数学化了
1./(t.*sin(t))
是一个非常糟糕的函数,有很多极点,所以我认为你需要
sin(t)。/t
…如果zplesivcak确实正确,那么你也可以使用
sinc
我想你是在寻找
1./(t.*sin(t))
而不是
sin(t)。/t
?按照你编写这个表达式的方式,Matlab会将它解释为后一个表达式。@zplesivcak也许,我还不知道——我试图理解如何首先扭曲圆锥体的表面,即添加波动项。我喜欢把它看作是沿着曲面的投影,但我需要找出曲面在每个点上的法向量,思考。也许我觉得这太数学化了
1./(t.*sin(t))
是一个非常糟糕的函数,有很多极点,所以我认为你需要
sin(t)。/t
…如果zplesivcak确实是正确的,那么你也可以使用
sinc
我无法理解
“t=sqrt(x.^2+y.^2);”
——它现在在峰值上有更大的波动,在广阔区域附近有更小的波动吗?这个
“t=f=t+2*sinc(t)。*t”
使它看起来沿着表面振动一样——也许现在振动太大了?我还得研究这一点才能理解。我试过
f=1./t+2*sinc(t)
但为了达到最大峰值,测试…
t
只是半径,意思是
z(x,y)=sqrt(x^2+y^2)=t
将产生一个圆锥体。至于
sinc
,我不确定这是否是您所指的函数,但您可以在链接中的文档中了解它,我还在答案中添加了它的绘图。为什么你在评论中增加了
t*sinc
?这样做的结果是常规的
sin
而不是
sinc
…缺少螺钉形状(手绘图片)、尖头和从宽区域到顶部的下降波动(振幅最小的顶部)--尝试了
f=t+2*fliplr(sinc(t))
但不工作--仍在调试,可能是自己解决问题,但需要一些时间。
sinc
是一个对称函数,
fliplr
不会改变它。我想你需要先找到一个函数,它能满足你的需要,这就是sinc,不是吗。也许您需要类似于
f=t+exp(-t/a)。*cos(b*t)
;我无法理解
“t=sqrt(x.^2+y.^2);”
——现在它在峰值上的波动更大,而在广阔区域附近的波动更小吗?这个
“t=f=t+2*sinc(t)。*t”
使它看起来沿着表面振动一样——也许现在振动太大了?我还得研究这一点才能理解。我试过
f=1./t+2*sinc(t)
但为了达到最大峰值,测试…
t
只是半径,意思是
z(x,y)=sqrt(x^2+y^2)=t
将产生一个圆锥体。至于
sinc
,我不确定这是否是您所指的函数,但您可以在链接中的文档中了解它,我还在答案中添加了它的绘图。为什么你在评论中增加了
t*sinc
?这样做会导致常规的
sin
而不是
sinc
…缺少螺钉形状(手绘图片)、尖头和从broa下降的波动