public void Render(bool picking = false) { int PlaneIdx = 0; foreach (KCL.Plane plane in this.Planes) { Vector3 PositionA; Vector3 PositionB; Vector3 PositionC; Vector3 Normal; KCL.GetTriangle(this, PlaneIdx, out PositionA, out PositionB, out PositionC, out Normal); Color color = this.GetColor(plane.Type); if (picking && color.A != (byte)0) { color = Color.FromArgb(PlaneIdx + 1 | -16777216); } Gl.glColor4f((float)color.R / (float)byte.MaxValue, (float)color.G / (float)byte.MaxValue, (float)color.B / (float)byte.MaxValue, (float)color.A / (float)byte.MaxValue); Gl.glBegin(4); Gl.glNormal3f(Normal.X, Normal.Y, Normal.Z); Gl.glVertex3f(PositionA.X, PositionA.Z, PositionA.Y); Gl.glVertex3f(PositionB.X, PositionB.Z, PositionB.Y); Gl.glVertex3f(PositionC.X, PositionC.Z, PositionC.Y); Gl.glEnd(); ++PlaneIdx; } }
public static void GetTriangle( KCL k, int PlaneIdx, out Vector3 PositionA, out Vector3 PositionB, out Vector3 PositionC) { KCL.GetTriangle(k, PlaneIdx, out PositionA, out PositionB, out PositionC, out Vector3 _); }