protected override void CreateMap() { m_currentType = m_curvatureType; Texture2D curveMap = new Texture2D(m_width, m_height); for (int y = 0; y < m_height; y++) { for (int x = 0; x < m_width; x++) { Vector2 d1; Vector3 d2; GetDerivatives(x, y, out d1, out d2); float curvature = 0; Color color = Color.white; switch (m_curvatureType) { case CURVATURE_TYPE.PLAN: curvature = PlanCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 1.5f, false); break; case CURVATURE_TYPE.HORIZONTAL: curvature = HorizontalCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 2.0f, false); break; case CURVATURE_TYPE.VERTICAL: curvature = VerticalCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 2.0f, false); break; case CURVATURE_TYPE.MEAN: curvature = MeanCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 2.4f, false); break; case CURVATURE_TYPE.GAUSSIAN: curvature = GaussianCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 5.0f, false); break; case CURVATURE_TYPE.MINIMAL: curvature = MinimalCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 2.5f, false); break; case CURVATURE_TYPE.MAXIMAL: curvature = MaximalCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 2.5f, false); break; case CURVATURE_TYPE.UNSPHERICITY: curvature = UnsphericityCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 2.0f, true); break; case CURVATURE_TYPE.ROTOR: curvature = RotorCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 2.5f, false); break; case CURVATURE_TYPE.DIFFERENCE: curvature = DifferenceCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 2.0f, false); break; case CURVATURE_TYPE.HORIZONTAL_EXCESS: curvature = HorizontalExcessCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 2.0f, true); break; case CURVATURE_TYPE.VERTICAL_EXCESS: curvature = VerticalExcessCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 2.0f, true); break; case CURVATURE_TYPE.RING: curvature = RingCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 5.0f, true); break; case CURVATURE_TYPE.ACCUMULATION: curvature = AccumulationCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 5.0f, false); break; } ; curveMap.SetPixel(x, y, color); } } curveMap.Apply(); m_material.mainTexture = curveMap; }
public override float4[] CreateMap() { m_currentType = m_curvatureType; float4[] map = new float4[width * height]; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { float2 d1; float3 d2; GetDerivatives(x, y, out d1, out d2); float curvature = 0; float4 color = white; switch (m_curvatureType) { case CURVATURE_TYPE.PLAN: curvature = PlanCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 1.5f, false); break; case CURVATURE_TYPE.HORIZONTAL: curvature = HorizontalCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 2.0f, false); break; case CURVATURE_TYPE.VERTICAL: curvature = VerticalCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 2.0f, false); break; case CURVATURE_TYPE.MEAN: curvature = MeanCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 2.4f, false); break; case CURVATURE_TYPE.GAUSSIAN: curvature = GaussianCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 5.0f, false); break; case CURVATURE_TYPE.MINIMAL: curvature = MinimalCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 2.5f, false); break; case CURVATURE_TYPE.MAXIMAL: curvature = MaximalCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 2.5f, false); break; case CURVATURE_TYPE.UNSPHERICITY: curvature = UnsphericityCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 2.0f, true); break; case CURVATURE_TYPE.ROTOR: curvature = RotorCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 2.5f, false); break; case CURVATURE_TYPE.DIFFERENCE: curvature = DifferenceCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 2.0f, false); break; case CURVATURE_TYPE.HORIZONTAL_EXCESS: curvature = HorizontalExcessCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 2.0f, true); break; case CURVATURE_TYPE.VERTICAL_EXCESS: curvature = VerticalExcessCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 2.0f, true); break; case CURVATURE_TYPE.RING: curvature = RingCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 5.0f, true); break; case CURVATURE_TYPE.ACCUMULATION: curvature = AccumulationCurvature(d1.x, d1.y, d2.x, d2.y, d2.z); color = Colorize(curvature, 5.0f, false); break; } ; map[x + y * width] = color; } } return(map); }