public Object(Color color) { this.objColor = color; if (color == Color.Gray) { outlineColor = Color.White; } this.center = new CustomPoint(); }
public override void Draw(OpenGL gl) { _length = (float)(ScaleX) * 2.0f; _height = (float)(ScaleY) * 2.0f; gl.Rotate(RotateX, RotateY, RotateZ); R = Math.Sqrt(3) * _length / 3; gl.Color(ObjColor.R / 255.0, ObjColor.G / 255.0, ObjColor.B / 255.0); //tam giac duoi CustomPoint V1 = new CustomPoint(Center.X + R, Center.Y - _height / 2, Center.Z); CustomPoint V2 = new CustomPoint(Center.X + R * Math.Cos(alpha), Center.Y - _height / 2, Center.Z + R * Math.Sin(alpha)); CustomPoint V3 = new CustomPoint(Center.X + R * Math.Cos(2 * alpha), Center.Y - _height / 2, Center.Z + R * Math.Sin(2 * alpha)); //tam giac tren CustomPoint V4 = new CustomPoint(V1.X, Center.Y + _height / 2, V1.Z); CustomPoint V5 = new CustomPoint(V2.X, Center.Y + _height / 2, V2.Z); CustomPoint V6 = new CustomPoint(V3.X, Center.Y + _height / 2, V3.Z); //Ve mat tam giac gl.Begin(OpenGL.GL_TRIANGLES); gl.Vertex(V1.X, V1.Y, V1.Z); // V1 gl.Vertex(V2.X, V2.Y, V2.Z); // V2 gl.Vertex(V3.X, V3.Y, V3.Z); // V3 gl.Vertex(V4.X, V4.Y, V4.Z); // V4 gl.Vertex(V5.X, V5.Y, V5.Z); // V5 gl.Vertex(V6.X, V6.Y, V6.Z); // V6 gl.End(); //Ve mat ben gl.Color(ObjColor.R / 255.0, ObjColor.G / 255.0, ObjColor.B / 255.0); gl.Begin(OpenGL.GL_QUADS); gl.Vertex(V1.X, V1.Y, V1.Z); // V1 gl.Vertex(V2.X, V2.Y, V2.Z); // V2 gl.Vertex(V5.X, V5.Y, V5.Z); // V5 gl.Vertex(V4.X, V4.Y, V4.Z); // V4 gl.Vertex(V1.X, V1.Y, V1.Z); // V1 gl.Vertex(V3.X, V3.Y, V3.Z); // V3 gl.Vertex(V6.X, V6.Y, V6.Z); // V6 gl.Vertex(V4.X, V4.Y, V4.Z); // V4 gl.Vertex(V2.X, V2.Y, V2.Z); // V2 gl.Vertex(V3.X, V3.Y, V3.Z); // V3 gl.Vertex(V6.X, V6.Y, V6.Z); // V6 gl.Vertex(V5.X, V5.Y, V5.Z); // V5 gl.End(); //vien khung gl.Color(OutlineColor.R / 255.0, OutlineColor.G / 255.0, OutlineColor.B / 255.0); gl.LineWidth(OutlineWeight); gl.Begin(OpenGL.GL_LINES); gl.Vertex(V1.X, V1.Y, V1.Z); // V1 gl.Vertex(V2.X, V2.Y, V2.Z); // V2 gl.Vertex(V2.X, V2.Y, V2.Z); // V2 gl.Vertex(V3.X, V3.Y, V3.Z); // V3 gl.Vertex(V1.X, V1.Y, V1.Z); // V1 gl.Vertex(V3.X, V3.Y, V3.Z); // V3 gl.Vertex(V1.X, V1.Y, V1.Z); // V1 gl.Vertex(V4.X, V4.Y, V4.Z); // V4 gl.Vertex(V2.X, V2.Y, V2.Z); // V2 gl.Vertex(V5.X, V5.Y, V5.Z); // V5 gl.Vertex(V3.X, V3.Y, V3.Z); // V3 gl.Vertex(V6.X, V6.Y, V6.Z); // V6 gl.Vertex(V4.X, V4.Y, V4.Z); // V4 gl.Vertex(V5.X, V5.Y, V5.Z); // V5 gl.Vertex(V6.X, V6.Y, V6.Z); // V6 gl.Vertex(V4.X, V4.Y, V4.Z); // V4 gl.Vertex(V6.X, V6.Y, V6.Z); // V6 gl.Vertex(V5.X, V5.Y, V5.Z); // V5 gl.End(); gl.Flush(); gl.Rotate(-RotateX, -RotateY, -RotateZ); }
public Object() { this.objColor = Color.Gray; this.center = new CustomPoint(); }