49 static final double pi = 3.14159265;
75 void scale(
float xf,
float yf,
float zf) {
91 void translate(
float x,
float y,
float z) {
98 void yrot(
double theta) {
100 double ct = Math.cos(theta);
101 double st = Math.sin(theta);
103 float Nxx = (float) (xx * ct + zx * st);
104 float Nxy = (float) (xy * ct + zy * st);
105 float Nxz = (float) (xz * ct + zz * st);
106 float Nxo = (float) (xo * ct + zo * st);
108 float Nzx = (float) (zx * ct - xx * st);
109 float Nzy = (float) (zy * ct - xy * st);
110 float Nzz = (float) (zz * ct - xz * st);
111 float Nzo = (float) (zo * ct - xo * st);
124 void xrot(
double theta) {
126 double ct = Math.cos(theta);
127 double st = Math.sin(theta);
129 float Nyx = (float) (yx * ct + zx * st);
130 float Nyy = (float) (yy * ct + zy * st);
131 float Nyz = (float) (yz * ct + zz * st);
132 float Nyo = (float) (yo * ct + zo * st);
134 float Nzx = (float) (zx * ct - yx * st);
135 float Nzy = (float) (zy * ct - yy * st);
136 float Nzz = (float) (zz * ct - yz * st);
137 float Nzo = (float) (zo * ct - yo * st);
150 void zrot(
double theta) {
152 double ct = Math.cos(theta);
153 double st = Math.sin(theta);
155 float Nyx = (float) (yx * ct + xx * st);
156 float Nyy = (float) (yy * ct + xy * st);
157 float Nyz = (float) (yz * ct + xz * st);
158 float Nyo = (float) (yo * ct + xo * st);
160 float Nxx = (float) (xx * ct - yx * st);
161 float Nxy = (float) (xy * ct - yy * st);
162 float Nxz = (float) (xz * ct - yz * st);
163 float Nxo = (float) (xo * ct - yo * st);
176 void mult(Matrix3D rhs) {
177 float lxx = xx * rhs.xx + yx * rhs.xy + zx * rhs.xz;
178 float lxy = xy * rhs.xx + yy * rhs.xy + zy * rhs.xz;
179 float lxz = xz * rhs.xx + yz * rhs.xy + zz * rhs.xz;
180 float lxo = xo * rhs.xx + yo * rhs.xy + zo * rhs.xz + rhs.xo;
182 float lyx = xx * rhs.yx + yx * rhs.yy + zx * rhs.yz;
183 float lyy = xy * rhs.yx + yy * rhs.yy + zy * rhs.yz;
184 float lyz = xz * rhs.yx + yz * rhs.yy + zz * rhs.yz;
185 float lyo = xo * rhs.yx + yo * rhs.yy + zo * rhs.yz + rhs.yo;
187 float lzx = xx * rhs.zx + yx * rhs.zy + zx * rhs.zz;
188 float lzy = xy * rhs.zx + yy * rhs.zy + zy * rhs.zz;
189 float lzz = xz * rhs.zx + yz * rhs.zy + zz * rhs.zz;
190 float lzo = xo * rhs.zx + yo * rhs.zy + zo * rhs.zz + rhs.zo;
228 void transform(
float v[],
int tv[],
int nvert) {
229 float lxx = xx, lxy = xy, lxz = xz, lxo = xo;
230 float lyx = yx, lyy = yy, lyz = yz, lyo = yo;
231 float lzx = zx, lzy = zy, lzz = zz, lzo = zo;
232 for (
int i = nvert * 3; (i -= 3) >= 0;) {
236 tv[i] = (int) (x * lxx + y * lxy + z * lxz + lxo);
237 tv[i + 1] = (int) (x * lyx + y * lyy + z * lyz + lyo);
238 tv[i + 2] = (int) (x * lzx + y * lzy + z * lzz + lzo);
243 public String toString() {
244 return (
"[" + xo +
"," + xx +
"," + xy +
"," + xz +
";"
245 + yo +
"," + yx +
"," + yy +
"," + yz +
";"
246 + zo +
"," + zx +
"," + zy +
"," + zz +
"]");