public static final Atom invert(Atom a) { double[] coords = new double[]{0.0,0.0,0.0} ; Atom zero = new AtomImpl(); zero.setCoords(coords); return subtract(zero, a); }
/** * Projects a given point onto the axis of rotation * @param point * @return An atom which lies on the axis, or null if the RotationAxis is purely translational */ public Atom getProjectedPoint(Atom point) { if(rotationPos == null) { // translation only return null; } Atom localPoint = Calc.subtract(point, rotationPos); double dot = Calc.scalarProduct(localPoint, rotationAxis); Atom localProjected = Calc.scale(rotationAxis, dot); Atom projected = Calc.add(localProjected, rotationPos); return projected; }
/** * Use unit vectors NC and NCalpha Add them. Calc unit vector and * substract it from N. * C coordinates are from amino acid i-1 * N, CA atoms from amino acid i * * @link http://openbioinformatics.blogspot.com/ * 2009/08/how-to-calculate-h-atoms-for-nitrogens.html */ @SuppressWarnings("unused") private static Atom calc_H(Atom C, Atom N, Atom CA) throws StructureException { Atom nc = Calc.subtract(N,C); Atom nca = Calc.subtract(N,CA); Atom u_nc = Calc.unitVector(nc) ; Atom u_nca = Calc.unitVector(nca); Atom added = Calc.add(u_nc,u_nca); Atom U = Calc.unitVector(added); // according to Creighton distance N-H is 1.03 +/- 0.02A Atom H = Calc.add(N,U); H.setName("H"); // this atom does not have a pdbserial number ... return H; }
otherTranslation = Calc.subtract(translation, screwTranslation);
private static Atom calcSimple_H(Atom c, Atom o, Atom n) { Atom h = Calc.subtract(c,o); double dist = Calc.getDistance(o,c); //System.out.println(dist); double x = n.getX() + h.getX() / dist; double y = n.getY() + h.getY() / dist; double z = n.getZ() + h.getZ() / dist; h.setX(x); h.setY(y); h.setZ(z); h.setName("H"); return h; }
axialPt = Calc.subtract(center, centerOnAxis);