annotate examples/java3d/MatrixPointArray.java @ 8:5e3cbbf173aa tip

Reorganise some more
author samer
date Fri, 05 Apr 2019 22:41:58 +0100
parents 5df24c91468d
children
rev   line source
samer@1 1 import samer.core.types.*;
samer@1 2 import samer.maths.*;
samer@1 3 import java.util.*;
samer@1 4 import javax.media.j3d.*;
samer@1 5 import javax.vecmath.*;
samer@1 6
samer@1 7
samer@1 8 public class MatrixPointArray extends PointArray implements Observer
samer@1 9 {
samer@1 10 int N; // number of points
samer@1 11 Matrix P; // 3d positions of points
samer@1 12 VVector A; // scalar activations
samer@1 13 VDouble K; // slaing factor for activations
samer@1 14 float carray[]; // array for holding colours
samer@1 15
samer@1 16
samer@1 17 public MatrixPointArray(Matrix points, VVector activities)
samer@1 18 {
samer@1 19 super(points.getRowDimension(), COORDINATES | COLOR_3);
samer@1 20
samer@1 21 N=points.getRowDimension();
samer@1 22 P=points;
samer@1 23 A=activities;
samer@1 24 carray=new float[3*N];
samer@1 25 K=new VDouble("scale",1);
samer@1 26
samer@1 27 // set capabilities for subsequent updates
samer@1 28 setCapability(ALLOW_COORDINATE_WRITE);
samer@1 29 setCapability(ALLOW_COLOR_WRITE);
samer@1 30
samer@1 31 {
samer@1 32 double [] a=A.array();
samer@1 33 for (int i=0; i<N; i++) a[i]=1;
samer@1 34 }
samer@1 35
samer@1 36 updatePoints();
samer@1 37 updateActivities();
samer@1 38
samer@1 39 A.addObserver(this);
samer@1 40 }
samer@1 41
samer@1 42
samer@1 43 public void update(Observable o, Object a)
samer@1 44 {
samer@1 45 updateActivities();
samer@1 46 }
samer@1 47
samer@1 48 public void updatePoints()
samer@1 49 {
samer@1 50 // load points into point array
samer@1 51 double [][] PA=P.getArray();
samer@1 52 double [] row;
samer@1 53 for (int i=0; i<N; i++) {
samer@1 54 row=PA[i];
samer@1 55 setCoordinate(i,row);
samer@1 56 }
samer@1 57 }
samer@1 58
samer@1 59 public void updateActivities()
samer@1 60 {
samer@1 61 // load colours
samer@1 62 double [] a=A.array();
samer@1 63 double k=K.value;
samer@1 64
samer@1 65 for (int i=0, j=0; i<N; i++,j+=3) {
samer@1 66 float ai=(float)(a[i]*k);
samer@1 67 carray[j]=ai;
samer@1 68 carray[j+1]=0.8f*ai;
samer@1 69 carray[j+2]=0.4f*ai;
samer@1 70 }
samer@1 71 setColors(0,carray);
samer@1 72 }
samer@1 73 }