示例#1
0
int Confo_Back::Recon_Back_WS_One(XYZ *mol,char *cle,int moln,XYZ **output,XYZ pre,XYZ nxt)
{
	if(moln!=1)return -1;
	XYZ real;
	double dist;
	//pre
	real=pre-mol[0];
	dist=pre.distance(mol[0]);
	real=real/dist;
	real=real*3.8;
	case_mol[0]=mol[0]+real;
	//nxt
	real=nxt-mol[0];
	dist=nxt.distance(mol[0]);
	real=real/dist;
	real=real*3.8;
	case_mol[2]=mol[0]+real;
	//construct
	case_mol[1]=mol[0];
	case_cle[0]='Q';
	if(cle[0]!='R')case_cle[1]=cle[0];
	else case_cle[1]='Q';
	case_cle[2]='Q';
	//build
	int retv;
	retv=Recon_Back_WS(case_mol,case_cle,3,case_mcb);
	if(retv!=1)return retv;
	//final
	int j;
	for(j=0;j<5;j++)output[0][j]=case_mcb[1][j];
	//return
	return 1;
}
示例#2
0
int Confo_Back::Recon_Back_WS_2nxt(XYZ *mol,char *cle,int moln,XYZ **output,XYZ nxt)
{
	if(moln!=2)return -1;
	XYZ real;
	double dist;
	real=nxt-mol[1];
	dist=nxt.distance(mol[1]);
	real=real/dist;
	real=real*3.8;
	real=mol[1]+real;
	//construct
	case_mol[0]=mol[0];
	case_mol[1]=mol[1];
	case_mol[2]=real;
	if(cle[0]!='R')case_cle[0]=cle[0];
	else case_cle[0]='Q';
	if(cle[1]!='R')case_cle[1]=cle[1];
	else case_cle[1]='Q';
	case_cle[2]='Q';
	//build
	int retv;
	retv=Recon_Back_WS(case_mol,case_cle,3,case_mcb);
	if(retv!=1)return retv;
	//final
	int i,j;
	for(i=0;i<2;i++)for(j=0;j<5;j++)output[i][j]=case_mcb[i][j];
	//return
	return 1;
}