Пример #1
0
void CTransform::TransformPoint(float *pt3)
{
	if(Mode == rotate)
	{
		float & ptHorz = pt3[axHorz];
		float & ptVert = pt3[axVert];
		float fX, fY;

		// find rotate angle
		rotate_coords(&fX, &fY, ptHorz - ptRef[axHorz], 
			ptVert - ptRef[axVert], fAngle);
		ptHorz = fX + ptRef[axHorz];
		ptVert = fY + ptRef[axVert];

		return;
	}

	if(Mode == shear)
	{
		if(
	}
}
Пример #2
0
ErrorCode update_res_coords(IndexValue res, FloatValue *coords, BoolValue *distmask, struct AtomData *atoms, IndexValue natoms, struct ResidueData *residues, struct ChainData *chains, IndexValue nchains, BoolValue updatemask)
{
    IndexValue bond;
    FloatValue alpha;
    for (bond = 0; bond < residues[res].nbonds; bond++)
        if (residues[res].bonds[bond].type != NOT_SET)
        {
            alpha = residues[res].bonds[bond].newangle - residues[res].bonds[bond].angle;
            if (fabs(alpha) > MIN_FLOAT_DIFF)
            {
                rotate_coords(coords, alpha, bond, residues, res);
                
                if (updatemask)
                {
                    update_distmask(distmask, atoms, natoms, bond, residues, res, chains, nchains);
                }

                residues[res].bonds[bond].angle += alpha; 
            }
        }
    return NO_ERROR;
}