public void updateVectorField_internal() {
		double theta = Math.toRadians(m_flowRotate.getValue());
		PdMatrix rotation = m_flowReflect.getState() 
				? Utils.reflectionMatrix(theta / 2)
				: Utils.rotationMatrix(theta / 2);
		m_field.setRotation(rotation);
		m_interpolatedField = new InterpolatedTensorField(m_domain, m_field);
		updateLICImage();

		if (m_degeneratePoints != null) {
			m_disp.removeGeometry(m_degeneratePoints);
		}

		m_degeneratePoints = new PgPointSet(2);
		m_degeneratePoints.setName("Calculated Degenerate Points");
		m_degeneratePoints.showVertices(true);
		m_degeneratePoints.setGlobalVertexSize(3.0);
		m_degeneratePoints.showVertexColors(true);

		if (m_separatrices != null && m_disp.containsGeometry(m_separatrices)) {
			m_disp.removeGeometry(m_separatrices);
		}
		m_separatrices = new PgPolygonSet(2);
		m_separatrices.setName("Separatrices");
		m_separatrices.showVertices(true);
		m_separatrices.setGlobalVertexColor(Color.orange);
		m_separatrices.setGlobalPolygonColor(Color.orange);

		/*
		LineTracer trace = new ClassicalRungeKuttaTracer(field);
		*/

		int i = 0;
		for(DegeneratePoint p : m_interpolatedField.findDegeneratePoints()) {
			m_degeneratePoints.addVertex(p.position);
			Color c = null;
			switch(p.type) {
			case Wedge:
				c = Color.yellow;
				findSeparatrices(p);
				break;
			case Trisector:
				c = Color.blue;
				findSeparatrices(p);
				break;
			case HigherOrder:
				c = Color.white;
				break;
			}
			m_degeneratePoints.setVertexColor(i, c);
			++i;
		}
		System.out.println("degenerate points found: " + m_degeneratePoints.getNumVertices());
		m_disp.addGeometry(m_degeneratePoints);
		if (m_showSeparatrices.getState()) {
			m_disp.addGeometry(m_separatrices);
		}
		m_disp.selectGeometry(m_field.termBasePoints());
	}