Set co-variance matrix.
90 {
91 using namespace std;
93
94
95 const int N = distance(__begin, __end);
96
97 this ->resize(N);
99
100 const double ta = alpha * PI / 180.0;
101 const double ct = cos(ta);
102 const double st = sin(ta);
103
104
105
106
107 for (T i = __begin; i != __end; ++i) {
108
109 const double dx = i->getX() - pos.getX();
110 const double dy = i->getY() - pos.getY();
111 const double dz = i->getZ() - pos.getZ();
112
113 const double R = sqrt(dx*dx + dy*dy);
114
115 double x = ta * getKappaC() * getInverseSpeedOfLight();
116 double y = ta * getKappaC() * getInverseSpeedOfLight();
117 double v = ta * getInverseSpeedOfLight();
118 double w = ta * getInverseSpeedOfLight();
119
120 if (R != 0.0) {
121 x *= dx / R;
122 y *= dy / R;
123 }
124
125 x *= (dz*ct - dx*st);
126 y *= (dz*ct - dy*st);
127 v *= -(dx*ct + dz*st);
128 w *= -(dy*ct + dz*st);
129
130 buffer[distance(__begin,i)] = variance(x, y, v, w);
131 }
132
133 for (int i = 0; i != N; ++i) {
134
135 for (int j = 0; j != i; ++j) {
137 (*this)(j, i) = (*this)(i, j);
138 }
139
141 }
142 }
std::vector< variance > buffer
static double getDot(const variance &first, const variance &second)
Get dot product.