X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=srcjar%2Fjavajs%2Futil%2FT3.java;fp=srcjar%2Fjavajs%2Futil%2FT3.java;h=0000000000000000000000000000000000000000;hb=5152dafd5d71c877156621def8463d437c9c5453;hp=6cd510852638491f8d793a41acb2e24a563d5f1c;hpb=c4cf7aa546ede43930f9a17fec5060119984da41;p=jalview.git diff --git a/srcjar/javajs/util/T3.java b/srcjar/javajs/util/T3.java deleted file mode 100644 index 6cd5108..0000000 --- a/srcjar/javajs/util/T3.java +++ /dev/null @@ -1,337 +0,0 @@ -/* - Copyright (C) 1997,1998,1999 - Kenji Hiranabe, Eiwa System Management, Inc. - - This program is free software. - Implemented by Kenji Hiranabe(hiranabe@esm.co.jp), - conforming to the Java(TM) 3D API specification by Sun Microsystems. - - Permission to use, copy, modify, distribute and sell this software - and its documentation for any purpose is hereby granted without fee, - provided that the above copyright notice appear in all copies and - that both that copyright notice and this permission notice appear - in supporting documentation. Kenji Hiranabe and Eiwa System Management,Inc. - makes no representations about the suitability of this software for any - purpose. It is provided "AS IS" with NO WARRANTY. -*/ -package javajs.util; - -import java.io.Serializable; - -import javajs.api.JSONEncodable; - -/** - * A generic 3 element tuple that is represented by single precision floating - * point x,y and z coordinates. - * - * @version specification 1.1, implementation $Revision: 1.10 $, $Date: - * 2006/09/08 20:20:20 $ - * @author Kenji hiranabe - * - * additions by Bob Hanson hansonr@stolaf.edu 9/30/2012 - * for unique constructor and method names - * for the optimization of compiled JavaScript using Java2Script - */ -public abstract class T3 implements JSONEncodable, Serializable { - - public float x, y, z; - - public T3() { - } - - /** - * Sets the value of this tuple to the specified xyz coordinates. - * - * @param x - * the x coordinate - * @param y - * the y coordinate - * @param z - * the z coordinate - */ - public final void set(float x, float y, float z) { - this.x = x; - this.y = y; - this.z = z; - } - - /** - * Sets the value of this tuple from the 3 values specified in the array. - * - * @param t - * the array of length 3 containing xyz in order - */ - public final void setA(float t[]) { - // ArrayIndexOutOfBounds is thrown if t.length < 3 - x = t[0]; - y = t[1]; - z = t[2]; - } - - /** - * Sets the value of this tuple to the value of the Tuple3f argument. - * - * @param t1 - * the tuple to be copied - */ - public final void setT(T3 t1) { - x = t1.x; - y = t1.y; - z = t1.z; - } - - /** - * Sets the value of this tuple to the vector sum of tuples t1 and t2. - * - * @param t1 - * the first tuple - * @param t2 - * the second tuple - */ - public final void add2(T3 t1, T3 t2) { - x = t1.x + t2.x; - y = t1.y + t2.y; - z = t1.z + t2.z; - } - - /** - * Sets the value of this tuple to the vector sum of itself and tuple t1. - * - * @param t1 - * the other tuple - */ - public final void add(T3 t1) { - x += t1.x; - y += t1.y; - z += t1.z; - } - - /** - * Computes the square of the distance between this point and point p1. - * - * @param p1 - * the other point - * @return the square of distance between these two points as a float - */ - public final float distanceSquared(T3 p1) { - double dx = x - p1.x; - double dy = y - p1.y; - double dz = z - p1.z; - return (float) (dx * dx + dy * dy + dz * dz); - } - - /** - * Returns the distance between this point and point p1. - * - * @param p1 - * the other point - * @return the distance between these two points - */ - public final float distance(T3 p1) { - return (float) Math.sqrt(distanceSquared(p1)); - } - - /** - * Sets the value of this tuple to the vector difference of tuple t1 and t2 - * (this = t1 - t2). - * - * @param t1 - * the first tuple - * @param t2 - * the second tuple - */ - public final void sub2(T3 t1, T3 t2) { - x = t1.x - t2.x; - y = t1.y - t2.y; - z = t1.z - t2.z; - } - - /** - * Sets the value of this tuple to the vector difference of itself and tuple - * t1 (this = this - t1). - * - * @param t1 - * the other tuple - */ - public final void sub(T3 t1) { - x -= t1.x; - y -= t1.y; - z -= t1.z; - } - - /** - * Sets the value of this tuple to the scalar multiplication of itself. - * - * @param s - * the scalar value - */ - public final void scale(float s) { - x *= s; - y *= s; - z *= s; - } - - /** - * Add {a b c} - * - * @param a - * @param b - * @param c - */ - public final void add3(float a, float b, float c) { - x += a; - y += b; - z += c; - } - - - /** - * {x*p.x, y*p.y, z*p.z) used for three-way scaling - * - * @param p - */ - public final void scaleT(T3 p) { - x *= p.x; - y *= p.y; - z *= p.z; - } - - - /** - * Sets the value of this tuple to the scalar multiplication of tuple t1 and - * then adds tuple t2 (this = s*t1 + t2). - * - * @param s - * the scalar value - * @param t1 - * the tuple to be multipled - * @param t2 - * the tuple to be added - */ - public final void scaleAdd2(float s, T3 t1, T3 t2) { - x = s * t1.x + t2.x; - y = s * t1.y + t2.y; - z = s * t1.z + t2.z; - } - - - /** - * average of two tuples - * - * @param a - * @param b - */ - public void ave(T3 a, T3 b) { - x = (a.x + b.x) / 2f; - y = (a.y + b.y) / 2f; - z = (a.z + b.z) / 2f; - } - - /** - * Vector dot product. Was in Vector3f; more useful here, though. - * - * @param v - * the other vector - * @return this.dot.v - */ - public final float dot(T3 v) { - return x * v.x + y * v.y + z * v.z; - } - - /** - * Returns the squared length of this vector. - * Was in Vector3f; more useful here, though. - * - * @return the squared length of this vector - */ - public final float lengthSquared() { - return x * x + y * y + z * z; - } - - /** - * Returns the length of this vector. - * Was in Vector3f; more useful here, though. - * - * @return the length of this vector - */ - public final float length() { - return (float) Math.sqrt(lengthSquared()); - } - - /** - * Normalizes this vector in place. - * Was in Vector3f; more useful here, though. - */ - public final void normalize() { - double d = length(); - - // zero-div may occur. - x /= d; - y /= d; - z /= d; - } - - /** - * Sets this tuple to be the vector cross product of vectors v1 and v2. - * - * @param v1 - * the first vector - * @param v2 - * the second vector - */ - public final void cross(T3 v1, T3 v2) { - set(v1.y * v2.z - v1.z * v2.y, v1.z * v2.x - v1.x * v2.z, v1.x * v2.y - - v1.y * v2.x); - } - - /** - * Returns a hash number based on the data values in this object. Two - * different Tuple3f objects with identical data values (ie, returns true for - * equals(Tuple3f) ) will return the same hash number. Two vectors with - * different data members may return the same hash value, although this is not - * likely. - */ - @Override - public int hashCode() { - long bits = 1L; - bits = 31L * bits + floatToIntBits(x); - bits = 31L * bits + floatToIntBits(y); - bits = 31L * bits + floatToIntBits(z); - return (int) (bits ^ (bits >> 32)); - } - - public static int floatToIntBits(float x) { - return (x == 0 ? 0 : Float.floatToIntBits(x)); - } - - /** - * Returns true if all of the data members of Tuple3f t1 are equal to the - * corresponding data members in this - * - * @param t1 - * the vector with which the comparison is made. - */ - @Override - public boolean equals(Object t1) { - if (!(t1 instanceof T3)) - return false; - T3 t2 = (T3) t1; - return (x == t2.x && y == t2.y && z == t2.z); - } - - /** - * Returns a string that contains the values of this Tuple3f. The form is - * (x,y,z). - * - * @return the String representation - */ - @Override - public String toString() { - return "{" + x + ", " + y + ", " + z + "}"; - } - - @Override - public String toJSON() { - return "[" + x + "," + y + "," + z + "]"; - } -}