Я внедряю систему в этой статье , и я немного отклеился от правильного применения радиального тензорного поля.
Все тензоры в этой системе имеют форму, приведенную настраница 3, раздел 4
R [ cos(2t), sin(2t); sin(2t), -cos(2t) ]
Поле радиального тензора определяется как:
R [ yy - xx, -2xy; -2xy, -(yy-xx) ]
В моей системе я храню только R и Theta, поскольку могу вычислять тензор на основеот этой информации.Это означает, что мне нужно вычислить R и Theta для радиального тензора.К сожалению, мои попытки этого не увенчались успехом.Хотя это выглядит правильно, мое решение не работает в верхнем левом и нижнем правом квадрантах.
Приложение : Исходя из обсуждения в комментариях о том, что образ системы не работает, я будупоставьте здесь несколько жестких чисел.Все тензорное поле имеет размер 800x480, центральная точка - {400, 240}, и мы используем стандартную графическую систему координат с отрицательной осью Y (т. Е. Начало координат в верхнем левом углу).
В{400, 240}, тензор R = 0, T = 0 При {200, 120} тензор R = 2.95936E + 9, T = 2.111216 При {600, 120} тензор R = 2.95936E+9, T = 1.03037679
Я легко могу выбрать еще несколько точек, которые, по вашему мнению, могут помочь.
Код, который я использую для вычисления значений:
float x = i - center.X;
float xSqr = x * x;
float y = j - center.Y;
float ySqr = y * y;
float r = (float)Math.Pow(xSqr + ySqr, 2);
float theta = (float)Math.Atan2((-2 * x * y), (ySqr - xSqr)) / 2;
if (theta < 0)
theta += MathHelper.Pi;