float calcSurfacePoint(float cutoff, float valueA, float valueB, Point3f surfacePoint) {
		float fraction;
		if (isJvxl && jvxlEdgeDataCount > 0) {
			fraction = jvxlGetNextFraction(edgeFractionBase, edgeFractionRange, 0.5f);
			thisValue = fraction;
		}
		else {
			float diff = valueB - valueA;
			fraction = (cutoff - valueA) / diff;
			if (isCutoffAbsolute && (fraction < 0 || fraction > 1))
				fraction = (-cutoff - valueA) / diff;

			if (fraction < 0 || fraction > 1) {
				Logger.error("problem with unusual fraction=" + fraction + " cutoff=" + cutoff + " A:" + valueA + " B:"
						+ valueB);
				fraction = Float.NaN;
			}
			thisValue = valueA + fraction * diff;
			if (!isJvxl)
				fractionData.append(jvxlFractionAsCharacter(fraction, edgeFractionBase, edgeFractionRange));
		}
		edgeVector.sub(pointB, pointA);
		surfacePoint.scaleAdd(fraction, edgeVector, pointA);
		return fraction;
	}