极坐标方程给出的阵列掩模边界

Array mask boundary given by polar equation

我有以下极坐标方程:r(theta) = R + a*Sin(n*theta),它制作了这种图(为此我使用了 R=1a=0.1n=5):

我想得到一个二维笛卡尔数组,它在这个边界内 0,在边界外 1(红笔标记)。

有人知道“优雅”且简单的方法吗?

到目前为止(以及正在进行的)我的尝试只是试图将极坐标网格转换为笛卡尔网格...

无论您的数组采用何种形式,每个位置的值都只是对功能值的测试:

import math

def array_val(x, y):
    # Compute the function value for the proper angle;
    # Compare to the actual radius; return 0 or 1

    theta = math.atan(y/x)    # Adjust for proper quadrant
    r = math.sqrt(x*x + y*y)
    return int(r <= (R + a * math.sin(5 * theta)))