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 */