annotate 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
rev   line source
samer@0 1 package samer.j3d;
samer@0 2
samer@0 3 import samer.core.types.*;
samer@0 4 import samer.maths.*;
samer@0 5 import java.util.*;
samer@0 6 import java.awt.Color;
samer@0 7 import javax.media.j3d.*;
samer@0 8 import javax.vecmath.*;
samer@0 9
samer@0 10
samer@0 11 public class MatrixPoints4D extends PointArray implements Observer
samer@0 12 {
samer@0 13 int N; // number of points
samer@0 14 Matrix P; // 3d positions of points
samer@0 15 VVector A; // scalar activations
samer@0 16 VDouble K; // scaling factor for activations
samer@0 17
samer@0 18 Color4f carray[];
samer@0 19
samer@0 20 public MatrixPoints4D(Matrix points, VVector activities)
samer@0 21 {
samer@0 22 super(points.getRowDimension(), COORDINATES | COLOR_4);
samer@0 23
samer@0 24 N=points.getRowDimension();
samer@0 25 P=points;
samer@0 26 A=activities;
samer@0 27 K=new VDouble("scale",1);
samer@0 28
samer@0 29 carray=new Color4f[N];
samer@0 30 for (int i=0; i<N; i++) carray[i]=new Color4f();
samer@0 31
samer@0 32 // set capabilities for subsequent updates
samer@0 33 setCapability(ALLOW_COORDINATE_WRITE);
samer@0 34 setCapability(ALLOW_COLOR_WRITE);
samer@0 35
samer@0 36 updatePoints();
samer@0 37 updateActivities();
samer@0 38
samer@0 39 A.addObserver(this);
samer@0 40 P.addObserver(new Observer () {
samer@0 41 public void update(Observable o, Object a) {
samer@0 42 updatePoints();
samer@0 43 }
samer@0 44 });
samer@0 45 }
samer@0 46
samer@0 47
samer@0 48 public void update(Observable o, Object a)
samer@0 49 {
samer@0 50 updateActivities();
samer@0 51 }
samer@0 52
samer@0 53 public void updatePoints()
samer@0 54 {
samer@0 55 // load points into point array
samer@0 56 double [][] PA=P.getArray();
samer@0 57 double [] row;
samer@0 58
samer@0 59 for (int i=0; i<N; i++) {
samer@0 60 row=PA[i];
samer@0 61 setCoordinate(i,row);
samer@0 62
samer@0 63 // choose color according to 4th dimension
samer@0 64 carray[i].set(Color.getHSBColor((float)(row[3]*0.3)+0.16f,1f,1f));
samer@0 65 }
samer@0 66 }
samer@0 67
samer@0 68 public void updateActivities()
samer@0 69 {
samer@0 70 // load colours
samer@0 71 double [] a=A.array();
samer@0 72 double k=K.value;
samer@0 73
samer@0 74 for (int i=0; i<N; i++) {
samer@0 75 float ai=(float)(a[i]*k);
samer@0 76 carray[i].w=ai;
samer@0 77 }
samer@0 78 setColors(0,carray);
samer@0 79 }
samer@0 80 }