public IFieldVisualizer alpha(float a) { if (a < 0f) alpha = 0f; else if (a > 1f) alpha = 1f; else alpha = a; minColor = new IColor(minColor.getRed(), minColor.getGreen(), minColor.getBlue(), (int) (alpha * 255)); maxColor = new IColor(maxColor.getRed(), maxColor.getGreen(), maxColor.getBlue(), (int) (alpha * 255)); return this; }
public IFieldVisualizer colorRange(IColor minClr, IColor maxClr) { minColor = minClr; maxColor = maxClr; autoColorAdjust = true; if (alpha != 1f) { minColor = new IColor( minColor.getRed(), minColor.getGreen(), minColor.getBlue(), (int) (alpha * 255)); maxColor = new IColor( maxColor.getRed(), maxColor.getGreen(), maxColor.getBlue(), (int) (alpha * 255)); } return this; }
public IFieldVisualizer colorRange( IColor minColor, double minLength, IColor maxColor, double maxLength) { this.minColor = minColor; minLength = minLength; this.maxColor = maxColor; maxLength = maxLength; autoColorAdjust = false; if (alpha != 1f) { minColor = new IColor( minColor.getRed(), minColor.getGreen(), minColor.getBlue(), (int) (alpha * 255)); maxColor = new IColor( maxColor.getRed(), maxColor.getGreen(), maxColor.getBlue(), (int) (alpha * 255)); } return this; }
public synchronized void interact(ArrayList<IDynamics> agents) { if (!fieldSet || updateAlways) { // reset for (int i = 0; i < vectors.length; i++) { for (int j = 0; j < vectors[i].length; j++) { for (int k = 0; k < vectors[i][j].length; k++) { vectors[i][j][k].zero(); } } } for (int a = 0; a < agents.size(); a++) { if (agents.get(a) instanceof I3DFieldI) { I3DFieldI field = (I3DFieldI) agents.get(a); for (int i = 0; i < vectors.length; i++) { for (int j = 0; j < vectors[i].length; j++) { for (int k = 0; k < vectors[i][j].length; k++) { // add field force vectors[i][j][k].add(field.get(arrows[i][j][k].root())); } } } } else if (agents.get(a) instanceof I2DFieldI) { // not clean way to do this. I2DField.applyField is issue. I2DFieldI field = (I2DFieldI) agents.get(a); for (int i = 0; i < vectors.length; i++) { for (int j = 0; j < vectors[i].length; j++) { for (int k = 0; k < vectors[i][j].length; k++) { // add field force vectors[i][j][k].add(field.get(arrows[i][j][k].root()).to3d()); } } } } } if (autoColorAdjust || autoLengthAdjust) { for (int i = 0; i < vectors.length; i++) { for (int j = 0; j < vectors[i].length; j++) { for (int k = 0; k < vectors[i][j].length; k++) { double len = vectors[i][j][k].len(); if (i == 0 && j == 0 && k == 0) { minLength = maxLength = len; } else { if (len < minLength) minLength = len; if (len > maxLength) maxLength = len; } } } } } for (int i = 0; i < arrows.length; i++) { for (int j = 0; j < arrows[i].length; j++) { for (int k = 0; k < arrows[i][j].length; k++) { // minLength/maxLength is for the original length, not scaled one. if (minColor != null && maxColor != null) { double len = vectors[i][j][k].len(); if (IG.eq(minLength, maxLength)) { arrows[i][j][k].clr(maxColor); } else if (len <= minLength) arrows[i][j][k].clr(minColor); else if (len >= maxLength) arrows[i][j][k].clr(maxColor); else { double r = (len - minLength) / (maxLength - minLength); int red = (int) ((maxColor.getRed() - minColor.getRed()) * r + minColor.getRed()); int green = (int) ((maxColor.getGreen() - minColor.getGreen()) * r + minColor.getGreen()); int blue = (int) ((maxColor.getBlue() - minColor.getBlue()) * r + minColor.getBlue()); int alp = (int) ((maxColor.getAlpha() - minColor.getAlpha()) * r + minColor.getAlpha()); arrows[i][j][k].clr(red, green, blue, alp); } } if (vectors[i][j][k].len() > IConfig.tolerance) { if (fixLength) { if (autoLengthAdjust) { vectors[i][j][k].len(spacing * scale); } else { vectors[i][j][k].len(fixedLength); } } else { if (autoLengthAdjust) { double r = 1.0; if (!IG.eq(minLength, maxLength)) { double len = vectors[i][j][k].len(); r = (len - minLength) / (maxLength - minLength); } r *= scale; if (r < minAutoLengthRatio) { r = minAutoLengthRatio; } vectors[i][j][k].len(r * spacing); } else { vectors[i][j][k].mul(scale); } } if (autoSizeAdjust) { arrows[i][j][k].size(vectors[i][j][k].len() * arrowSizeRatio); } arrows[i][j][k].vector().set(vectors[i][j][k]); arrows[i][j][k].updateGraphic(); if (!arrows[i][j][k].visible()) arrows[i][j][k].show(); } else { arrows[i][j][k].hide(); } } } } fieldSet = true; } }