Function 用于创建方向与径向成45度的螺旋条纹的函数?
我正试图为一个神经科学实验重建所描绘图像中的螺旋模式。基本上,模式具有以下属性: 1螺旋的每个部分都具有与径向成45度的局部方向 2螺旋的每个臂的厚度与半径成正比增加 理想情况下,我希望能够根据需要参数化地改变螺旋臂的数量。可以忽略中间区域和圆形边界的空白圆圈,它们非常容易添加。 有没有人知道,是否有一个函数,根据旋臂的数量和局部方向,能够重建这种螺旋模式?为了它的价值,我正在用Matlab编写代码,尽管如果有人有数学公式,我可以自己实现它,没有问题Function 用于创建方向与径向成45度的螺旋条纹的函数?,function,plot,graphic,spiral,Function,Plot,Graphic,Spiral,我正试图为一个神经科学实验重建所描绘图像中的螺旋模式。基本上,模式具有以下属性: 1螺旋的每个部分都具有与径向成45度的局部方向 2螺旋的每个臂的厚度与半径成正比增加 理想情况下,我希望能够根据需要参数化地改变螺旋臂的数量。可以忽略中间区域和圆形边界的空白圆圈,它们非常容易添加。 有没有人知道,是否有一个函数,根据旋臂的数量和局部方向,能够重建这种螺旋模式?为了它的价值,我正在用Matlab编写代码,尽管如果有人有数学公式,我可以自己实现它,没有问题 您的螺旋图像不符合属性1的要求,通过使用翻转
您的螺旋图像不符合属性1的要求,通过使用翻转副本覆盖螺旋可以看出,外边缘的角度比45度更垂直于径向,而内边缘的角度更平行: 正如我所评论的,对数螺旋可以满足这两个属性。我使用Fragmentarium在GLSL中实现了它,下面是代码:
#include "Progressive2D.frag"
#group Spiral
uniform int Stripes; slider[1,20,100]
const float pi = 3.141592653589793;
vec2 cLog(vec2 z)
{
return vec2(log(length(z)), atan(z.y, z.x));
}
vec3 color(vec2 p)
{
float t = radians(45.0);
float c = cos(t);
float s = sin(t);
mat2 m = mat2(c, -s, s, c);
vec2 q = m * cLog(p);
return vec3(float
( mod(float(Stripes) * q.y / (sqrt(2.0) * pi), 1.0) < 0.5
|| length(p) < 0.125
|| length(p) > 0.875
));
}
以及输出:
属性1和属性2有一个对数螺旋的解决方案,但这看起来与您的图像不同-因此必须有另一个缺少的属性。对数螺线的直臂是共形的,但是你的看起来更弯曲,所以也许缺少的特性是关于曲率的?