final void renderHermiteArrowHead(int i) {
		short colix = getLeadColix(i);
		setNeighbors(i);
		if (setMads(i, false)) {
			try {
				doCap0 = true;
				doCap1 = false;
				if (meshes[i] == null || !meshReady[i])
					createMeshCylinder(i, (int) (madBeg * 1.2), (int) (madBeg * 0.6), 0, aspectRatio >> 1);
				meshes[i].colix = colix;
				render1(meshes[i]);
				return;
			}
			catch (Exception e) {
				System.out.println("render mesh error hermiteArrowHead: " + e.toString());
				// e.printStackTrace();
			}
		}

		calc1Screen(controlPoints[i], wingVectors[i], (short) madBeg, .0007f, screenArrowTop);
		calc1Screen(controlPoints[i], wingVectors[i], (short) madBeg, -.0007f, screenArrowBot);
		calc1Screen(controlPoints[i], wingVectors[i], (short) madBeg, 0.001f, screenArrowTopPrev);
		calc1Screen(controlPoints[i], wingVectors[i], (short) madBeg, -0.001f, screenArrowBotPrev);
		if (ribbonBorder && aspectRatio == 0)
			g3d.fillCylinder(colix, colix, Graphics3D.ENDCAPS_SPHERICAL, 3, screenArrowTop.x, screenArrowTop.y,
					screenArrowTop.z, screenArrowBot.x, screenArrowBot.y, screenArrowBot.z);
		g3d.drawHermite(true, ribbonBorder, colix, isNucleic ? 4 : 7, screenArrowTopPrev, screenArrowTop,
				controlPointScreens[iNext], controlPointScreens[iNext2], screenArrowBotPrev, screenArrowBot,
				controlPointScreens[iNext], controlPointScreens[iNext2], aspectRatio);
	}