Mercurial > hg > jslab
view src/samer/j3d/MatrixPoints4D.java @ 8:5e3cbbf173aa tip
Reorganise some more
author | samer |
---|---|
date | Fri, 05 Apr 2019 22:41:58 +0100 |
parents | bf79fb79ee13 |
children |
line wrap: on
line source
package samer.j3d; import samer.core.types.*; import samer.maths.*; import java.util.*; import java.awt.Color; import javax.media.j3d.*; import javax.vecmath.*; public class MatrixPoints4D extends PointArray implements Observer { int N; // number of points Matrix P; // 3d positions of points VVector A; // scalar activations VDouble K; // scaling factor for activations Color4f carray[]; public MatrixPoints4D(Matrix points, VVector activities) { super(points.getRowDimension(), COORDINATES | COLOR_4); N=points.getRowDimension(); P=points; A=activities; K=new VDouble("scale",1); carray=new Color4f[N]; for (int i=0; i<N; i++) carray[i]=new Color4f(); // set capabilities for subsequent updates setCapability(ALLOW_COORDINATE_WRITE); setCapability(ALLOW_COLOR_WRITE); updatePoints(); updateActivities(); A.addObserver(this); P.addObserver(new Observer () { public void update(Observable o, Object a) { updatePoints(); } }); } public void update(Observable o, Object a) { updateActivities(); } public void updatePoints() { // load points into point array double [][] PA=P.getArray(); double [] row; for (int i=0; i<N; i++) { row=PA[i]; setCoordinate(i,row); // choose color according to 4th dimension carray[i].set(Color.getHSBColor((float)(row[3]*0.3)+0.16f,1f,1f)); } } public void updateActivities() { // load colours double [] a=A.array(); double k=K.value; for (int i=0; i<N; i++) { float ai=(float)(a[i]*k); carray[i].w=ai; } setColors(0,carray); } }