Python 极性方程给出的阵列掩模边界
我有下面的极性方程:Python 极性方程给出的阵列掩模边界,python,mask,Python,Mask,我有下面的极性方程:r(θ)=r+a*Sin(n*θ),这就形成了这种图(我使用了r=1,a=0.1,和n=5): 我希望最终得到一个二维笛卡尔数组,它在这个边界内0,而1在它之外(红色的笔标记) 有人知道一种“优雅”而简单的方法吗 到目前为止(以及正在进行的)我的尝试只是尝试将极坐标网格转换为笛卡尔网格…无论您的数组采用何种形式,每个位置的值都只是对函数值的测试: import math def array_val(x, y): # Compute the function val
r(θ)=r+a*Sin(n*θ)
,这就形成了这种图(我使用了r=1
,a=0.1
,和n=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)))
导入数学
def阵列值(x,y):
#计算适当角度的函数值;
#与实际半径进行比较;返回0或1
θ=数学常数(y/x)#调整合适的象限
r=数学sqrt(x*x+y*y)
return int(r)你真的需要数组吗?你可以随时计算任意给定点是在周长之内还是之外。一个简单的比较函数就可以了。是的,我需要数组进行计算。但是也许我可以按照你的建议先做一个比较函数,然后根据它构建数组?