Esempio n. 1
0
        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;
        }
Esempio n. 2
0
        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);
        }