Function 用于创建方向与径向成45度的螺旋条纹的函数?

Function 用于创建方向与径向成45度的螺旋条纹的函数?,function,plot,graphic,spiral,Function,Plot,Graphic,Spiral,我正试图为一个神经科学实验重建所描绘图像中的螺旋模式。基本上,模式具有以下属性: 1螺旋的每个部分都具有与径向成45度的局部方向 2螺旋的每个臂的厚度与半径成正比增加 理想情况下,我希望能够根据需要参数化地改变螺旋臂的数量。可以忽略中间区域和圆形边界的空白圆圈,它们非常容易添加。 有没有人知道,是否有一个函数,根据旋臂的数量和局部方向,能够重建这种螺旋模式?为了它的价值,我正在用Matlab编写代码,尽管如果有人有数学公式,我可以自己实现它,没有问题 您的螺旋图像不符合属性1的要求,通过使用翻转

我正试图为一个神经科学实验重建所描绘图像中的螺旋模式。基本上,模式具有以下属性:

1螺旋的每个部分都具有与径向成45度的局部方向 2螺旋的每个臂的厚度与半径成正比增加

理想情况下,我希望能够根据需要参数化地改变螺旋臂的数量。可以忽略中间区域和圆形边界的空白圆圈,它们非常容易添加。 有没有人知道,是否有一个函数,根据旋臂的数量和局部方向,能够重建这种螺旋模式?为了它的价值,我正在用Matlab编写代码,尽管如果有人有数学公式,我可以自己实现它,没有问题


您的螺旋图像不符合属性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有一个对数螺旋的解决方案,但这看起来与您的图像不同-因此必须有另一个缺少的属性。对数螺线的直臂是共形的,但是你的看起来更弯曲,所以也许缺少的特性是关于曲率的?