1 package com.insanityengine.ghia.libograf; 2 3 import com.insanityengine.ghia.m3.Pt3; 4 5 /*** 6 * 7 * <P> 8 * This interface provides an implementation-agnostice mechanism to 9 * set, get, push and pop state information. 10 * </P> 11 * 12 * @author BrianHammond 13 * 14 * $Header: /usr/local/cvsroot/ghia/src/java/com/insanityengine/ghia/libograf/State.java,v 1.4 2005/03/19 17:50:02 brian Exp $ 15 * 16 */ 17 public interface State { 18 19 /*** 20 * 21 * identity 22 * 23 * @return a State 24 * 25 */ 26 public State identity(); 27 28 /*** 29 * 30 * rotate 31 * 32 * @param angle 33 * 34 * @return a State 35 * 36 */ 37 public State rotate( Pt3 angle ); 38 39 /*** 40 * 41 * translate 42 * 43 * @param displacement 44 * 45 * @return a State 46 * 47 */ 48 public State translate( Pt3 displacement ); 49 50 /*** 51 * 52 * scale 53 * 54 * @param ratio 55 * 56 * @return a State 57 * 58 */ 59 public State scale( Pt3 ratio ); 60 61 /*** 62 * 63 * multiply: this = this * state 64 * 65 * @param state 66 * 67 * @return this State 68 * 69 */ 70 public State multiply( State state ); 71 72 /*** 73 * 74 * set 75 * 76 * @param state 77 * 78 * @return this State 79 * 80 */ 81 public State set( State state ); 82 83 /*** 84 * 85 * multiply 86 * 87 * @param point 88 * @param destination 89 * 90 * @return a Pt3 91 * 92 */ 93 public Pt3 multiply( Pt3 point, Pt3 destination ); 94 95 }; 96 97 /*** 98 * 99 * $Log: State.java,v $ 100 * Revision 1.4 2005/03/19 17:50:02 brian 101 * repackaging 102 * 103 * Revision 1.3 2005/03/12 04:36:44 brian 104 * fix javadoc 105 * 106 * Revision 1.2 2005/03/11 23:35:31 brian 107 * major refactoring to add in com.insanityengine.ghia.libograf.State bitz 108 * 109 * Revision 1.1 2005/03/10 13:31:19 brian 110 * introduce com.insanityengine.ghia/libograf/State to pave the way for quaternions based LiboGrafInterface implementation 111 * 112 * 113 */