m->m[0]=1; m->m[1]=0; m->m[2]=0; m->m[3]=
n*v.x;
48m->m[4]=0; m->m[5]=1; m->m[6]=0; m->m[7]=
n*v.y;
49m->m[8]=0; m->m[9]=0; m->m[10]=1; m->m[11]=
n*v.z;
50m->m[12]=0; m->m[13]=0; m->m[14]=0; m->m[15]=1;
55m->
m[0]=v.
x; m->
m[1]=0; m->
m[2]=0; m->
m[3]=0;
56m->
m[4]=0; m->
m[5]=v.
y; m->
m[6]=0; m->
m[7]=0;
57m->
m[8]=0; m->
m[9]=0; m->
m[10]=v.
z; m->
m[11]=0;
58m->
m[12]=0; m->
m[13]=0; m->
m[14]=0; m->
m[15]=1;
71m->
m[0]=u.
x*u.
x*
t+c;
72m->
m[1]=u.
x*u.
y*
t-u.
z*s;
73m->
m[2]=u.
x*u.
z*
t+u.
y*s;
76m->
m[4]=u.
x*u.
y*
t+u.
z*s;
77m->
m[5]=u.
y*u.
y*
t+c;
78m->
m[6]=u.
y*u.
z*
t-u.
x*s;
81m->
m[8]=u.
x*u.
z*
t-u.
y*s;
82m->
m[9]=u.
y*u.
z*
t+u.
x*s;
83m->
m[10]=u.
z*u.
z*
t+c;
86m->
m[12]=m->
m[13]=m->
m[14]=0; m->
m[15]=1;
95 t.x=m.
m[0]*v->
x+ m.
m[1]*v->
y+ m.
m[2]*v->
z+ m.
m[3];
96 t.y=m.
m[4]*v->
x+ m.
m[5]*v->
y+ m.
m[6]*v->
z+ m.
m[7];
97 t.z=m.
m[8]*v->
x+ m.
m[9]*v->
y+ m.
m[10]*v->
z+ m.
m[11];
105 for(
int i=0;
i<4; ++
i) {
106 for(
intj=0; j<4; ++j) {
108 for(
ints=0; s<4; ++s) {
109 C->m[4*
i+j] += (
A.m[4*
i+s])*(
B.m[4*s+j]);
123 a=
A.m[0],
b=
A.m[1], c=
A.m[2], d=
A.m[3],
124e=
A.m[4],
f=
A.m[5],
g=
A.m[6], h=
A.m[7],
125 i=
A.m[8], j=
A.m[9], k=
A.m[10],
l=
A.m[11];
127 doubledenom=(-(c*
f*
i) +
b*
g*
i+ c*e*j -
a*
g*j -
b*e*k +
a*
f*k);
129I->
m[0]= (-(
g*j) +
f*k)/denom;
130I->
m[1]= (c*j -
b*k)/denom;
131I->
m[2]= (-(c*
f) +
b*
g)/denom;
132I->
m[3]= (d*
g*j - c*h*j - d*
f*k +
b*h*k + c*
f*
l-
b*
g*
l)/denom;
133I->
m[4]= (
g*
i- e*k)/denom;
134I->
m[5]= (-(c*
i) +
a*k)/denom;
135I->
m[6]= (c*e -
a*
g)/denom;
136I->
m[7]= (-(d*
g*
i) + c*h*
i+ d*e*k -
a*h*k - c*e*
l+
a*
g*
l)/denom;
137I->
m[8]= (-(
f*
i) + e*j)/denom;
138I->
m[9]= (
b*
i-
a*j)/denom;
139I->
m[10]= (-(
b*e) +
a*
f)/denom;
140I->
m[11]= (d*
f*
i-
b*h*
i- d*e*j +
a*h*j +
b*e*
l-
a*
f*
l)/denom;
142I->
m[12]=0; I->
m[13]=0; I->
m[14]=0; I->
m[15]=1;
182 intnatx,
const Vector*
const*xref,
const Vector*
const*xvar,
const double*weights,
186 doublerot[3][3], corlnmatrx[3][3];
187 intflag1, flag2, flag3;
189 doublean2, xx,
f, fz=0.0, sgn, del, phix, phibes;
196 for(iatv=0; iatv<natx; ++iatv) {
197 if(weights[iatv] <= 0.)
continue;
198an2 += weights[iatv];
199cgref += *(xref[iatv]) * weights[iatv];
200cgvar += *(xvar[iatv]) * weights[iatv];
206 for(
i=0;
i<3; ++
i) {
208 for(j=0; j<3; ++j) {
209corlnmatrx[
i][j] = 0.;
212 for(iatv=0; iatv<natx; ++iatv) {
213 for(
i=0;
i<3; ++
i) {
214 if(weights[iatv] <= 0.)
continue;
215xx = ((*(xvar[iatv]))[
i] - cgvar[
i]) * weights[iatv];
216 for(j=0; j<3; ++j) {
217corlnmatrx[
i][j] += xx * ((*(xref[iatv]))[j] - cgref[j]);
223flag1 = flag2 = flag3 =
false;
230cosin[ix] = cos(phix);
231sine[ix] = sin(phix);
232rot[0][0] = cosin[1] * cosin[2];
233rot[1][0] = cosin[1] * sine[2];
234rot[0][1] = sine[0] * sine[1] * cosin[2] - cosin[0] * sine[2];
235rot[1][1] = sine[0] * sine[1] * sine[2] + cosin[0] * cosin[2];
236rot[2][0] = -sine[1];
237rot[2][1] = sine[0] * cosin[1];
238rot[2][2] = cosin[0] * cosin[1];
239rot[0][2] = cosin[0] * sine[1] * cosin[2] + sine[0] * sine[2];
240rot[1][2] = cosin[0] * sine[1] * sine[2] - sine[0] * cosin[2];
244 for(
i=0;
i<3; ++
i) {
245 for(j=0; j<3; ++j) {
246 f+= rot[
i][j] * corlnmatrx[
i][j];
253phix = phibes + sgn * del;
263phix = phibes + sgn * del;
271phix = phibes + sgn * del;
276cosin[ix] = cos(phibes);
277sine[ix] = sin(phibes);
283phi[ix] = phix = phibes + sgn * del;
290 if(del < tol)
break;
296phix = phibes + sgn * del;
303 for(
i=0;
i<3; ++
i) {
304 for(j=0; j<3; ++j) {
305rotMat[4*
i+ j] = rot[j][
i];
311 const Vector*
const*dependentCoords,
const Matrix*transformDependentToMaster)
316 for(
intc=0; c<nCoords; ++c) {
317 if(!dependentCoords[c] || !masterCoords[c])
continue;
318x = *(dependentCoords[c]);
319 if(transformDependentToMaster)
321rmsd += (*(masterCoords[c]) - x).lengthSquared();
325 WARNINGMSG(
"ComputeRMSD() - received no non-NULL coordinates");
328rmsd = sqrt(rmsd /
n);
Include a standard set of the NCBI C++ Toolkit most basic headers.
#define END_SCOPE(ns)
End the previously defined scope.
#define BEGIN_SCOPE(ns)
Define a new scope.
static SLJIT_INLINE sljit_ins l(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
int g(Seg_Gsm *spe, Seq_Mtf *psm, Thd_Gsm *tdg)
void InvertInto(Matrix *I, const Matrix &A)
double ComputeRMSD(int nCoords, const Vector *const *masterCoords, const Vector *const *dependentCoords, const Matrix *transformDependentToMaster)
void SetRotationMatrix(Matrix *m, const Vector &v, double rad, int n)
void ComposeInto(Matrix *C, const Matrix &A, const Matrix &B)
void SetTranslationMatrix(Matrix *m, const Vector &v, int n)
void ApplyTransformation(Vector *v, const Matrix &m)
void SetScaleMatrix(Matrix *m, const Vector &v)
void RigidBodyFit(int natx, const Vector *const *xref, const Vector *const *xvar, const double *weights, Vector &cgref, Vector &cgvar, Matrix &rotMat)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4