private void Draw(Circle circle) { Gl.glLoadIdentity(); var x = circle.Position.X; var y = circle.Position.Y; Gl.glTranslatef(x, y, -6f); Gl.glRotatef(circle.Rotation, 0.0f, 0.0f, 1.0f); Gl.glTranslatef(-x, -y, 6f); this.SetGlColor(circle.Color); Gl.glBegin(Gl.GL_TRIANGLE_FAN); var radius = circle.Radius * 0.5F; for (int i = 0; i < 360; i += 5) { var rads = Helper.DegreesToRad(i); Gl.glVertex3f( (float)(x + System.Math.Sin(rads) * radius), (float)(y + System.Math.Cos(rads) * radius), -6.0f); } Gl.glEnd(); this.SetGlColor(circle.RadiusColor); Gl.glBegin(Gl.GL_LINES); Gl.glVertex3f(x, y, -6.0f); Gl.glVertex3f(x + radius, y, -6.0f); Gl.glEnd(); }
public static Circle Create( World world, float positionX, float positionY, float radius, float density, float friction) { var result = new Circle(); result.Radius = radius; result.Density = density; result.Color = System.Drawing.Color.White; result.RadiusColor = Helper.GetRandomColor(); result.CreatePhysics(world, positionX, positionY, friction); return result; }