示例#1
0
        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;
            }
        }
示例#2
0
 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 _);
 }