code: public static final Atom createVirtualCBAtom(AminoAcid amino)
  			throws StructureException{
  
  		AminoAcid  ala = StandardAminoAcid.getAminoAcid("ALA");
  		Atom aN  = ala.getN();
  		Atom aCA = ala.getCA();
  		Atom aC  = ala.getC();
  		Atom aCB = ala.getCB();
  
  		Atom[] arr1 = new Atom[3];
  		arr1[0] = aN;
  		arr1[1] = aCA;
  		arr1[2] = aC;
  
  		Atom[] arr2 = new Atom[3];
  		arr2[0] = amino.getN();
  		arr2[1] = amino.getCA();
  		arr2[2] = amino.getC();
  
  		// ok now we got the two arrays, do a Superposition:
  
  		SuperPositionSVD svd = new SuperPositionSVD(false);
  
  		Matrix4d transform = svd.superpose(Calc.atomsToPoints(arr1), Calc.atomsToPoints(arr2));
  		Matrix rotMatrix = Matrices.getRotationJAMA(transform);
  		Atom tranMatrix = getTranslationVector(transform);
  
  		Calc.rotate(aCB,rotMatrix);
  
  		Atom virtualCB = Calc.add(aCB,tranMatrix);
  		virtualCB.setName("CB");
  
  		return virtualCB;
  	}
docs: creates a virtual C-beta atom. this might be needed when working with GLY
  
  thanks to Peter Lackner for a python template of this method.
  
  @param amino
  the amino acid for which a "virtual" CB atom should be
  calculated
  @return a "virtual" CB atom
  @throws StructureException