我正在尝试计算称为引力透镜的光学现象。用简单的话说就是当一个巨大的物体(或具有按摩质量的物体)在我作为观察者与恒星或某种光源的夹杂之间。因为它的质量很大,所以光线会弯曲,对我们来说,它显然会来自不同于实际位置的其他位置。在特定情况下(更简单),我们认为质量是球形的,因此从我们的角度来看,质量在2D平面(或照片)中为圆形。
我的代码想法是根据我的光源照亮它的位置来更改2D平面的坐标。换句话说,如果我有一个球形光源,如果它离我的大物体很远,它将不会成像,但是,如果它接近te球体质量,它将发生变化(实际上,如果它正好位于我的大物体之后,观察者将看到被称为爱因斯坦环的东西。
对于计算,我首先编写此函数的映射。我近似为a = x + sin(t)/exp(x) , b = y + cos(t)/exp(y)
。因此,当源光远离质量时,指数将近似为零,如果恰好在质量后面,则源光坐标将为(0,0),因此图像将返回(sin(t),cos (t))我有望获得的爱因斯坦圈子。
我以此方式编写代码,首先定义近似值:
def coso1(x,y):
t = arange(0,2*pi, .01);
a = x + sin(t)/exp(x)
b = y + cos(t)/exp(y)
plt.plot(a,b)
plt.show()
然后我尝试进行绘制以查看坐标图如何变化:
from numpy import *
from matplotlib.pyplot import *
x=linspace(-10,10,10)
y=linspace(-10,10,10)
y = y.reshape(y.size, 1)
x = x.reshape(x.size, 1)
plot(coso1(x,y))
我得到这个情节。
请注意,它看起来是这样的,因为我选择的间隔取x和y坐标的值。如果我发生在x = {-1,0,1}和y = {-1,0,1}的“前沿”情况下,它将显示空间是如何变形的(或者我猜那就是Im看到)。
然后我有几个问题。一个简单的问题,但是我没有找到一个简单的答案,如果我可以操纵这种转换(用鼠标旋转以精确估计变形,控制x或y的变化的控制器)。还有两个困难的问题:我可以绘制计数线以查看在x的每个水平上(正好让y保持不变)地图的地形变化的精确程度,另一个问题:如果这是我的“新”方法关于地图的行为,我可以使用这个新的坐标图作为工具,如果项目中有任何图像,它将在此“新”地图的功能中变形。类似于照相机如何使用鱼眼镜头效果。