/* * BioJava development code * * This code may be freely distributed and modified under the * terms of the GNU Lesser General Public Licence. This should * be distributed with the code. If you do not have a copy, * see: * * http://www.gnu.org/copyleft/lesser.html * * Copyright for this code is held jointly by the individual * authors. These should be listed in @author doc comments. * * For more information on the BioJava project and its aims, * or to join the biojava-l mailing list, visit the home page * at: * * http://www.biojava.org/ * * Created on Oct 7, 2013 * Author: blivens * */ /* * BioJava development code * * This code may be freely distributed and modified under the * terms of the GNU Lesser General Public Licence. This should * be distributed with the code. If you do not have a copy, * see: * * http://www.gnu.org/copyleft/lesser.html * * Copyright for this code is held jointly by the individual * authors. These should be listed in @author doc comments. * * For more information on the BioJava project and its aims, * or to join the biojava-l mailing list, visit the home page * at: * * http://www.biojava.org/ * * Created on Oct 7, 2013 * Author: blivens * */ package org.biojava.nbio.structure.align.util; import org.biojava.nbio.structure.Atom; import org.biojava.nbio.structure.AtomImpl; import org.junit.Test; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; /** * @author blivens * */ public class RotationAxisTest { @Test public void testProjection() throws Exception{ RotationAxis axis; Atom dir,pos,projected; dir = new AtomImpl(); pos = new AtomImpl(); // 180 around z dir.setCoords( new double[] {0,0,1}); pos.setCoords( new double[] {0,0,0} ); axis = new RotationAxis(dir, pos, Math.PI); pos.setCoords( new double[] {1,2,3}); projected = axis.getProjectedPoint(pos); assertArrayEquals(new double[] {0,0,3},projected.getCoords(),1e-14); double dist = axis.getProjectedDistance(pos); assertEquals(Math.sqrt(5),dist,1e-14); // main diagonal through (1,1,0) dir.setCoords( new double[] {2,2,2}); pos.setCoords( new double[] {1,1,0}); axis = new RotationAxis(dir, pos, Math.PI); pos.setCoords( new double[] {1,1,0}); projected = axis.getProjectedPoint(pos); assertArrayEquals(new double[] {1,1,0},projected.getCoords(),1e-14); pos.setCoords( new double[] {0,0,-1}); projected = axis.getProjectedPoint(pos); assertArrayEquals(new double[] {0,0,-1},projected.getCoords(),1e-14); pos.setCoords( new double[] {-.5,-.5,0}); projected = axis.getProjectedPoint(pos); assertArrayEquals(new double[] {0,0,-1},projected.getCoords(),1e-14); dist = axis.getProjectedDistance(pos); assertEquals(Math.sqrt(3/2.),dist,1e-14); pos.setCoords( new double[] {0,0,0}); projected = axis.getProjectedPoint(pos); assertArrayEquals(new double[] {1/3.,1/3.,-2/3.},projected.getCoords(),1e-14); } }