| | |
| | | int offset = x + y * width; |
| | | float fx = GetFloatValue(vxBuffer[offset]); |
| | | float fy = GetFloatValue(vyBuffer[offset]); |
| | | |
| | | double rv = GetRVal(fx, fy); |
| | | double dv = GetXyValue(fx, fy, rv); |
| | | int r = Convert.ToInt32(double.IsNaN(dv) || dv == 0 ? 0 : (dv * 0.5 + 0.5) * 255); |
| | | if (r < 0 || r > 255) r = 255; |
| | | |
| | | //int g = Convert.ToInt32((float.IsNaN(fx) ? 0 : fx * 0.5 + 0.5) * 255); |
| | | //int b = Convert.ToInt32((float.IsNaN(fy) ? 0 : fy * 0.5 + 0.5) * 255); |
| | | int r= Convert.ToInt32(double.IsNaN(dv) || dv == 0 ? 0 : (dv * 0.5 + 0.5) * 255); |
| | | int g = float.IsNaN(fx) ? 0 : Convert.ToInt32((fx - minHeight) / perHeight); |
| | | int b = float.IsNaN(fy) ? 0 : Convert.ToInt32((fy - minHeight) / perHeight); |
| | | if (r < 0 || r > 255) r = 255; |
| | | if (g < 0 || g > 255) g = 255; |
| | | if (b < 0 || b > 255) b = 255; |
| | | |
| | |
| | | /// </summary> |
| | | private static double GetRVal(float fx, float fy) |
| | | { |
| | | if (float.IsNaN(fx) && float.IsNaN(fy)) return 1.0; |
| | | if (float.IsNaN(fx) && float.IsNaN(fy)) return double.NaN; |
| | | |
| | | if (float.IsNaN(fx)) return Math.Abs(fy); |
| | | |
| | |
| | | return fx / rv; |
| | | } |
| | | |
| | | double v = Math.Sqrt(Math.Pow(fx / rv, 2) + Math.Pow(fy / rv, 2)); |
| | | double dv = fx / rv + fy / rv; |
| | | |
| | | return (fx > 0 && fy > 0) || (fx < 0 && fy < 0) ? v : -v; |
| | | return dv < 0 ? -Math.Sqrt(-dv) : Math.Sqrt(dv); |
| | | } |
| | | #endregion |
| | | |