繁体   English   中英

这个张量的正确解决方案

[英]Correct solution for this tensor

我执行系统中的本文和我来一点点脱胶正确地实现径向张量场。

本系统中的所有张量均采用第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 At {200,120},张量为R = 2.95936E + 9,T = 2.111216在{600,120}处,张量为R = 2.95936 E + 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;

显然你正在比较论文的公式(1)和(2)。 注意标量倍数l = || (u_x,u_y)|| 在公式(1)中,并在该部分的早期用R标识。 这个因素隐含在公式(2)中,所以为了使它们匹配,我们必须将R out考虑在内。

公式(2)使用径向贴图的“中心” (x0,y0)的偏移量:

x = xp - x0
y = yp - y0

形成给定的2x2矩阵:

y^2 - x^2       -2xy

  -2xy      -(y^2 - x^2)

我们需要从这个矩阵中分解标量R,得到无痕正交2x2矩阵,如公式(1)所示:

 cos(2t)      sin(2t)

 sin(2t)     -cos(2t)

由于cos^2(2t) + sin^2(2t) = 1 ,因子R可以被识别为:

 R = (y^2 - x^2)^2 + (-2xy)^2 = (x^2 + y^2)^2

留下无痕的正交2x2矩阵:

    C           S

    S          -C

角度'tan(2t)= S / C`可以通过逆三角函数提取。

好吧,差不多。 正如belisarius警告的那样,我们需要检查角度t是否在正确的象限中。 该论文的作者在Sec的开头写道。 4根据公式R [ cos(2t), sin(2t); sin(2t) -cos(2t) ] ,它们的“t”(指张量)取决于R >= 0而theta(你的t)位于[0,2pi R [ cos(2t), sin(2t); sin(2t) -cos(2t) ] R [ cos(2t), sin(2t); sin(2t) -cos(2t) ]

由于正弦和余弦具有周期2pi,因此t(θ)仅在长度pi的间隔内唯一确定。 我怀疑作者的意思是写出2t位于[0,2pi]或更简单地说t位于[0,pi)。 belisarius建议使用“atan2等价物”将避免任何除零。 我们可能(如果函数返回负值)需要添加pi以使t >= 0 这相当于增加2pi到2t,因此它不影响无迹线正交矩阵中条目的符号(因为'R> = 0',符号模式应该在公式(1)和(2)中一致)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM