Изменение карты координат в зависимости от ее координат (гравитационное линзирование) - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь вычислить оптическое явление, называемое гравитационным лицензированием.Проще говоря, когда массивный объект (или с массивной массой) находится между мной как наблюдателем и звездой или каким-то источником света.Из-за своей огромной массы свет будет искривляться, и для нас он, очевидно, придет из другого места, чем его реальное положение.Существует частный случай (и более простой), когда мы предполагаем, что масса сферическая, поэтому с нашей точки зрения она круговая в 2D-плоскости (или на фотографии).

Моя идея для кода, который изменял координаты 2Dплоскость в зависимости от того, где мой источник света его.Другими словами, если у меня есть источник сферического света, если он находится далеко от моего массивного объекта, он не будет отображать никаких изменений, но если он близок к массе сферического объекта, он изменится (фактически, если он находится точно за массивным объектом, янаблюдатель увидит кольцо Эйнштейна).

Для вычисления, я сначала напишу отображение этой функции.Я беру приближение 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))

И я получаю этот график.

Графика

Обратите внимание, что это выглядит так, потому что интервал Iвыбрать принимать значения для координат х и у.Если я буду иметь место в «пограничном» случае, когда x = {- 1,0,1} и y = {- 1,0,1}, это покажет, как пространство было деформировано (или я предполагаю, что это то, что явидя).

У меня тогда есть несколько вопросов.Простой вопрос, но я не нашел простого ответа, если я смогу манипулировать этим преобразованием (вращайте мышь, чтобы определить деформацию, контролирующую изменение х или у).И два трудных вопроса: могу ли я нарисовать линии счетчика, чтобы увидеть, как точно меняются топографии моей карты на каждом уровне x (предположим, я позволю y быть постоянным), и другой вопрос: если это мой «новый» способо том, как карта действует, могу ли я использовать эту новую карту координат в качестве инструмента, где Если проект любого изображения, оно будет искажено в функции этой "новой" карты.Что-то аналогичное тому, как камеры работают с эффектом рыбьей линзы.

...