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); }
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(); } } }
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); }
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); }
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(); }
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(); }
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(); } } }