コード例 #1
0
        NormColor CalculateFaceColor(Zone owner, Face face, FaceType faceType)
        {
            float averageValue = 0;

            switch (faceType)
            {
            case FaceType.Triangular:
                averageValue += (float)owner.Vertices[face.Vertices[0]].Data[Coding_DatatypeIndex];
                averageValue += (float)owner.Vertices[face.Vertices[1]].Data[Coding_DatatypeIndex];
                averageValue += (float)owner.Vertices[face.Vertices[2]].Data[Coding_DatatypeIndex];
                averageValue /= 3;
                break;

            case FaceType.Quadrilateral:
                averageValue += (float)owner.Vertices[face.Vertices[0]].Data[Coding_DatatypeIndex];
                averageValue += (float)owner.Vertices[face.Vertices[1]].Data[Coding_DatatypeIndex];
                averageValue += (float)owner.Vertices[face.Vertices[2]].Data[Coding_DatatypeIndex];
                averageValue += (float)owner.Vertices[face.Vertices[3]].Data[Coding_DatatypeIndex];
                averageValue /= 4;
                break;
            }

            double min = Mesh_Manager.dataTypeRange[Coding_DatatypeIndex].Key, max = Mesh_Manager.dataTypeRange[Coding_DatatypeIndex].Value;

            Color_Mapper.minValue = (float)min;
            Color_Mapper.maxValue = (float)max;
            Color     C     = Color_Mapper.ValueToColor(averageValue, mappingMode);
            NormColor color = NormalizeColor(C);

            return(color);
        }
コード例 #2
0
        void MeshDraw_EdgeCoding()
        {
            Gl.glClearColor(0, 0, 0, 0);
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
            Gl.glMatrixMode(Gl.GL_MODELVIEW);
            Gl.glLoadMatrixd(_Mesh.Transformation.Data);

            foreach (Zone z in _Mesh.Zones)
            {
                foreach (Face f in z.Faces)
                {
                    Gl.glBegin(Gl.GL_LINES);
                    foreach (uint e in f.Edges)
                    {
                        Edge      edge  = z.Edges[e];
                        NormColor color = CalculateEdgeColor(z, edge);
                        Gl.glColor3d(color.R, color.G, color.B);
                        z.Vertices[edge.Start].Position.glTell();
                        z.Vertices[edge.End].Position.glTell();
                    }
                    Gl.glEnd();
                    Gl.glFlush();
                }
            }
        }
コード例 #3
0
        NormColor NormalizeColor(Color color)
        {
            NormColor normColor = new NormColor();

            normColor.R = (double)color.R / 255.0;
            normColor.G = (double)color.G / 255.0;
            normColor.B = (double)color.B / 255.0;
            return(normColor);
        }
コード例 #4
0
        NormColor CalculateEdgeColor(Zone owner, Edge edge)
        {
            float Average_value = (float)(owner.Vertices[edge.Start].Data[Coding_DatatypeIndex]
                                          + owner.Vertices[edge.End].Data[Coding_DatatypeIndex]) / 2;
            double min = Mesh_Manager.dataTypeRange[Coding_DatatypeIndex].Key, max = Mesh_Manager.dataTypeRange[Coding_DatatypeIndex].Value;

            Color_Mapper.minValue = (float)min;
            Color_Mapper.maxValue = (float)max;
            Color     C     = Color_Mapper.ValueToColor(Average_value, mappingMode);
            NormColor color = NormalizeColor(C);

            return(color);
        }
コード例 #5
0
        void DrawIsoSurface()
        {
            List <Color>    isoSurfacesColors = Contour.isoSurfacesColors;
            List <Point3[]> isoSurfaces       = Contour.isoSurfaces;

            Gl.glBegin(Gl.GL_TRIANGLES);
            for (int i = 0; i < isoSurfaces.Count; i++)
            {
                NormColor color = NormalizeColor(isoSurfacesColors[i]);
                Gl.glColor3d(color.R, color.G, color.B);
                for (int j = 0; j < isoSurfaces[i].Length; j += 3)
                {
                    isoSurfaces[i][j].glTell();
                    isoSurfaces[i][j + 1].glTell();
                    isoSurfaces[i][j + 2].glTell();
                }
            }
            Gl.glEnd();
            Gl.glFlush();
        }
コード例 #6
0
        void DrawContourLines()
        {
            List <Color>    contourColors = Contour.contourColors;
            List <Point3[]> contourLines  = Contour.contourLines;

            Gl.glBegin(Gl.GL_LINES);
            for (int i = 0; i < contourLines.Count; i++)
            {
                NormColor color = NormalizeColor(contourColors[i]);
                Gl.glColor3d(color.R, color.G, color.B);
                if (contourLines[i].Length <= 1)
                {
                    continue;
                }
                contourLines[i][0].glTell();
                contourLines[i][1].glTell();
            }
            Gl.glEnd();
            Gl.glFlush();
        }
コード例 #7
0
        void DrawFloodedContours()
        {
            List <Color>            contourColors   = Contour.contourColors;
            List <List <Point3[]> > contourPolygons = Contour.contourPolygons;

            for (int i = 0; i < contourPolygons.Count; i++)
            {
                NormColor color = NormalizeColor(contourColors[i]);
                for (int j = 0; j < contourPolygons[i].Count; j++)
                {
                    Gl.glColor3d(color.R, color.G, color.B);
                    Gl.glBegin(Gl.GL_POLYGON);
                    for (int k = 0; k < contourPolygons[i][j].Length; k++)
                    {
                        contourPolygons[i][j][k].glTell();
                    }
                    Gl.glEnd();
                    Gl.glFlush();
                }
            }
        }