/*
 * AAJARPTest.java
 *
 * JARP  2005-03
 */
package jarp;


import java.io.IOException;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import org.xml.sax.InputSource;

import xml.*;


public class JAPartTest {
//
//	private static java.io.PrintStream			outs;
//
//	public static void main(String[] args)
//	throws java.io.IOException {
//
//		InputSource casins=
//			new InputSource(new FileInputStream("itm-arpman.cas"));
//		CASHandler cashdlr = new CASHandler();
//		XMLScanner casscan = new XMLScanner("CAS-Input", false);
//		casscan.scanXML(casins, cashdlr);
//		SGFrame[] frames = cashdlr.extractFrames();
//		System.out.println("frames-count="+frames.length);
//		System.exit(0);
////		tryShortSleeps();
//
//		outs =
//			new java.io.PrintStream(
//				new java.io.FileOutputStream("jptest.txt"));
//
//		Quaternion q = new Quaternion();
//		Quaternion qa = new Quaternion();
//		Quaternion qb = new Quaternion();
//
//		q.fromEuler(-30, -30, 0);
////		qshow(q, "Q(-30, -30, 0)");
//
//		q.fromEuler(30, 30, 0);
//		qshow(q, "Q(30, 30, 0)");
//
//		qa.fromEuler(30, 0, 0);
//		qb.fromEuler( 0,30, 0);
//		q = qa.mult(qb);
//		qshow(q, "product (30, 0) * ( 0,30)");
//
//		q = qb.mult(qa);
//		qshow(q, "product ( 0,30) * (30, 0)");
//
//		q.fromEuler(45, 0, 0);
//		qshow(q, "Q(45, 0, 0)");
//
//		q.fromEuler(30, 0, 0);
//		qshow(q, "Q(30, 0, 0)");
//		
//	}
//
//	private static void qshow(Quaternion q, String msg)
//	throws java.io.IOException {
//
//		outs.println(msg+" ....");
//		outs.printf(
//			"Quat: <%6.3f, %6.3f, %6.3f, %6.3f >\n",
//			q.w(), q.x(), q.y(), q.z());
//		outs.printf(
//			"    W-angle=%6.3f   ",
//			(Math.acos(q.w())*Quaternion.RADS_TO_DEGS*2));
//		double s = Math.sqrt(1-q.w()*q.w());
//		outs.printf(
//			"    Direction: <%6.3f, %6.3f, %6.3f >\n",
//			(q.x()/s), (q.y()/s), (q.z()/s));
//		outs.printf("    norm-sq=%6.3f\n", q.norm());
//		float[] m = new float[16];
//		q.toRotationMatrix4x4(m);
//		outs.printf(
//			"    Matrix: %6.3f %6.3f %6.3f\n", m[0], m[4], m[8]);
//		outs.printf(
//			"            %6.3f %6.3f %6.3f\n", m[1], m[5], m[9]);
//		outs.printf(
//			"            %6.3f %6.3f %6.3f\n", m[2], m[6], m[10]);
//		float[] eu = q.toEuler();
//		outs.printf(
//			"    Euler: <%6.3f, %6.3f, %6.3f >\n",
//			eu[0], eu[1], eu[2]);
//		outs.println("================");
//	}
//
//	private static void tryShortSleeps() {
//		
//		final int N = 6 * 1000;				// count iterations
//		final int T = 800 * 1000;			// period in nanosecs
//		long TM = T / (1000 * 1000);		// period millis
//		int TN = T - 1000 * 1000 * (int)TM;	// (period nanos)
//		System.out.println("TM="+TM+"  TN="+TN+"  N="+N);
//		final long NANOS = (long)N * T;		// total time in nanosecs
//
//		// Now do N sleeps of length T, and measure the elapsed time.
//		long t0 = System.nanoTime();
//		for (int i=0; i!=N; ++i) {
//			try {
//				Thread.sleep(TM, TN);
//			}
//			catch (InterruptedException ix) {
//			}
//		}
//		long t1 = System.nanoTime();
//		long tdiff = t1 - t0;		// elapsed time in nanosecs.
//
//		double scale = (double)tdiff / NANOS;
//		System.out.printf(
//			"T-micros=%6.3f  millis=%6.3f  clk-millis=%6.3f  scale=%6.3f\n",
//			(double)T/1000, (double)NANOS/1000000, (double)tdiff/1000000,
//			scale);
//
//		System.exit(0);
//	}
}
