35 double idet = 1. / (trans[0] * (trans[4]*trans[8] - trans[5]*trans[7]) +
36 trans[1] * (trans[5]*trans[6] - trans[3]*trans[8]) +
37 trans[2] * (trans[3]*trans[7] - trans[4]*trans[6]));
38 inv[0] =
idet * ( trans[4]*trans[8] - trans[5]*trans[7]);
39 inv[1] =
idet * (-trans[1]*trans[8] + trans[2]*trans[7]);
40 inv[2] =
idet * ( trans[1]*trans[5] - trans[2]*trans[4]);
41 inv[3] =
idet * (-trans[3]*trans[8] + trans[5]*trans[6]);
42 inv[4] =
idet * ( trans[0]*trans[8] - trans[2]*trans[6]);
43 inv[5] =
idet * (-trans[0]*trans[5] + trans[2]*trans[3]);
44 inv[6] =
idet * ( trans[3]*trans[7] - trans[4]*trans[6]);
45 inv[7] =
idet * (-trans[0]*trans[7] + trans[1]*trans[6]);
46 inv[8] =
idet * ( trans[0]*trans[4] - trans[1]*trans[3]);
54 shared_ptr<const MeshD<3>>
dst;
58 src(src.get()), dst(dst) {}
59 size_t size()
const override {
return dst->size(); }
127 fireChanged(Event::EVENT_USER_DEFINED);
136 fireChanged(Event::EVENT_USER_DEFINED);
154 return Vec<3,double>(inv[0] * point.c0 + inv[1] * point.c1 + inv[2] * point.c2,
155 inv[3] * point.c0 + inv[4] * point.c1 + inv[5] * point.c2,
156 inv[6] * point.c0 + inv[7] * point.c1 + inv[8] * point.c2);
165 return Vec<3,double>(inv[0] * c0 + inv[1] * c1 + inv[2] * c2,
166 inv[3] * c0 + inv[4] * c1 + inv[5] * c2,
167 inv[6] * c0 + inv[7] * c1 + inv[8] * c2);
176 return Vec<3,double>(trans[0] * coords.c0 + trans[1] * coords.c1 + trans[2] * coords.c2,
177 trans[3] * coords.c0 + trans[4] * coords.c1 + trans[5] * coords.c2,
178 trans[6] * coords.c0 + trans[7] * coords.c1 + trans[8] * coords.c2);
187 return Vec<3,double>(trans[0] * c0 + trans[1] * c1 + trans[2] * c2,
188 trans[3] * c0 + trans[4] * c1 + trans[5] * c2,
189 trans[6] * c0 + trans[7] * c1 + trans[8] * c2);
199 Vec<3, double> at(std::size_t index0, std::size_t index1, std::size_t index2)
const override {
200 return fromMeshCoords(axis[0]->at(index0), axis[1]->at(index1), axis[2]->at(index2));
215 return fromMeshCoords(getElementMidpoint0(index0), getElementMidpoint1(index1), getElementMidpoint2(index2));