If you want to restore Rescale and get the exact limits of the range of the curvature over the area of the patch, the following code block is the gccolor function created by J.M. at the link you provided, but using NMinValue and NMaxValue instead of PlotRange. If you want to flip the range, replace ColorFunction with Function[{x, y, z, u, v}, cf[Rescale[gc[u, v], rng, {1, 0}]]]
GaussianCurvature[f_, {u_, v_}] :=
Simplify[(Det[{D[f, {u, 2}], D[f, u], D[f, v]}] Det[{D[f, {v, 2}],
D[f, u], D[f, v]}] -
Det[{D[f, u, v], D[f, u],
D[f, v]}]^2)/(D[f, u].D[f, u] D[f, v].D[f,
v] - (D[f, u].D[f, v])^2)^2];
Options[gccolor] =
Select[Options[ParametricPlot3D], FreeQ[#, ColorFunctionScaling] &];
Off[RuleDelayed::rhs];
gccolor[f_, {u_, ura__}, {v_, vra__}, opts___?OptionQ] :=
Module[{cf, gc, rng},
cf = ColorFunction /. {opts} /. Options[gccolor];
If[cf === Automatic, cf = ColorData["LightTemperatureMap"]];
gc[u_, v_] = GaussianCurvature[f, {u, v}];
(*rng=Last[PlotRange/.AbsoluteOptions[Plot3D[gc[u,v],{u,ura},{v,
vra},PerformanceGoal\[Rule]"Speed",PlotRange\[Rule]Full],
PlotRange]];*)
rng = {
NMinValue[{gc[u, v],
And[Less[#2, #1, #3] & @@ {u, ura},
Less[#2, #1, #3] & @@ {v, vra}]}, {u, v}],
NMaxValue[{gc[u, v],
And[Less[#2, #1, #3] & @@ {u, ura},
Less[#2, #1, #3] & @@ {v, vra}]}, {u, v}]};
ParametricPlot3D[f, {u, ura}, {v, vra},
ColorFunction ->
Function[{x, y, z, u, v}, cf[Rescale[gc[u, v], rng]]],
ColorFunctionScaling -> False,
Evaluate[FilterRules[{opts}, Options[gccolor]]]]];
On[RuleDelayed::rhs];
Using the principal curves as the limits for the range, computed at each point to determine the color, I don’t think is going to do what you may expect for the GaussianCurvature case. Being the product of the two, gc is going to be able to exceed this interval, {k2[u, v], k1[u,v]}.
k1[u_, v_] = maxCurvature[f, {u, v}];
k2[u_, v_] = minCurvature[f, {u, v}];
ColorFunction ->
Function[{x, y, z, u, v}, cf[Rescale[gc[u, v], {k2[u, v], k1[u,v]}, {1,0}]]]