private Shape scaleArrowForBetterVisibility(RenderContext<V, E> rc, Shape arrow) {
		MultiLayerTransformer multiLayerTransformer = rc.getMultiLayerTransformer();
		MutableTransformer viewTransformer = multiLayerTransformer.getTransformer(Layer.VIEW);

		double scaleX2 = viewTransformer.getScaleX();
		double scaleY2 = viewTransformer.getScaleY();

		// make the arrow bigger so that later when the view scale is applied, the shape does
		// not get as small as fast as the graph
		AffineTransform fine = AffineTransform.getScaleInstance(1 / Math.pow(scaleX2, .68),
			1 / Math.pow(scaleY2, .68));
		return fine.createTransformedShape(arrow);
	}
Returns the edge shape for the given points

@param rc the render context for the graph
@param graph the graph
@param e the edge to shape
@param x1 the start vertex point x; layout space
@param y1 the start vertex point y; layout space
@param x2 the end vertex point x; layout space
@param y2 the end vertex point y; layout space
@param isLoop true if the start == end, which is a self-loop
@param vertexShape the vertex shape (used in the case of a loop to draw a circle from the 
		  shape to itself)
@return the edge shape
Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/edge/VisualEdgeRenderer.java