annotate src/samer/maths/MatrixAgent.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 /*
samer@0 2 * MatrixAgent.java
samer@0 3 *
samer@0 4 * Copyright (c) 2000, Samer Abdallah, King's College London.
samer@0 5 * All rights reserved.
samer@0 6 *
samer@0 7 * This software is provided AS iS and WITHOUT ANY WARRANTY;
samer@0 8 * without even the implied warranty of MERCHANTABILITY or
samer@0 9 * FITNESS FOR A PARTICULAR PURPOSE.
samer@0 10 */
samer@0 11
samer@0 12 package samer.maths;
samer@0 13
samer@0 14 import samer.core.*;
samer@0 15 import samer.core.Agent.*;
samer@0 16
samer@0 17 /**
samer@0 18 Provides a load of useful commands for dealing with
samer@0 19 a matrix.
samer@0 20 */
samer@0 21
samer@0 22 public class MatrixAgent extends Saver
samer@0 23 {
samer@0 24 private Matrix M;
samer@0 25
samer@0 26 public MatrixAgent(Matrix m) { super(m,m.getNode()); M=m; }
samer@0 27
samer@0 28 public void getCommands(Registry r)
samer@0 29 {
samer@0 30 r.add("zeros").add("identity").add("multiply");
samer@0 31 r.group(); super.getCommands(r); r.group();
samer@0 32 r.add("image").add("editor");
samer@0 33 r.add("rowcolumn");
samer@0 34 }
samer@0 35
samer@0 36 public String toString() { return "MatrixAgent("+M+")"; }
samer@0 37
samer@0 38 public void execute(String cmd, Environment env) throws Exception
samer@0 39 {
samer@0 40 if (cmd.equals("identity")) { M.identity(); M.changed(); }
samer@0 41 else if (cmd.equals("zeros")) { M.zero(); M.changed(); }
samer@0 42 else if (cmd.equals("multiply")) {
samer@0 43 double K=X._double(env.datum("factor"),1);
samer@0 44 M.timesEquals(K);
samer@0 45 M.changed();
samer@0 46 } else if (cmd.equals("rowcolumn")) {
samer@0 47 new RowColumn(M);
samer@0 48
samer@0 49 } else if (cmd.equals("plotter")) {
samer@0 50
samer@0 51 pushNode("plotter");
samer@0 52 Viewer vwr = new MatrixPlotter(M);
samer@0 53 Shell.expose(vwr, "window");
samer@0 54 Shell.pop();
samer@0 55
samer@0 56 } else if (cmd.equals("image")) {
samer@0 57
samer@0 58 pushNode("image");
samer@0 59
samer@0 60 Viewer vwr = new MatrixImage(M);
samer@0 61 Shell.expose(vwr, "window");
samer@0 62 Shell.pop();
samer@0 63
samer@0 64 } else if(cmd.equals("editor")) {
samer@0 65
samer@0 66 pushNode("editor");
samer@0 67 Shell.expose((Viewer)(new MatrixImageEditor(M)),"window");
samer@0 68 Shell.pop();
samer@0 69 } else super.execute(cmd,env);
samer@0 70 }
samer@0 71
samer@0 72 private void pushNode(String nm) { Shell.push(new Node(nm,M.getNode())); }
samer@0 73 }
samer@0 74
samer@0 75 class MatrixImageEditor extends MatrixImage
samer@0 76 {
samer@0 77 MatEditor editor;
samer@0 78
samer@0 79 public MatrixImageEditor(Matrix A) {
samer@0 80 super(A);
samer@0 81 editor = new MatEditor(A,this,A.observable(),this);
samer@0 82 }
samer@0 83
samer@0 84 public void detach()
samer@0 85 {
samer@0 86 editor.detach();
samer@0 87 super.detach();
samer@0 88 }
samer@0 89 }