对于这个问题,我需要使用 Python 或 Matlab 。
我下面有以下曲线图和方程式,on desmos也可用。
如何确定红色圆圈1 是在区域A 还是区域B 中?
当前方法:
使用大量的if语句找出圆相对于每个区域的位置,但这会使程序变得混乱,如果区域的形状发生变化,则需要进行大量仔细的重新编码。
生成一组位于每个区域中的所有点(x,y),然后检查圆的边界处的点是否包含在这些集合中的一个中。 ...但是这看起来非常幼稚且效率低下。
注意:
真正的问题涉及由分段函数创建的更复杂的形状,但是我认为这将是一个很好的起点。
答案 0 :(得分:0)
import numpy as np
f1 = lambda theta : 3 / np.cos(2/5 * np.arcsin(np.sin(5*2*theta)))
c1 = lambda theta : np.sqrt(0.1)
inside, outside = False, False
for theta in np.linspace(0, 2*np.pi, 100):
if c1(theta) <= f1(theta):
inside = True
if c1(theta) >= f1(theta):
outside = True
if inside and outside:
print('intersect')
elif inside:
print('inside')
else:
print('outside')
给出两个都位于极坐标中的区域f1
和一个圆c1
。计算不同theta
的半径,并进行比较。
可以通过求解获得圆的极坐标
r