public void ConstructorWithColor() { var circle = new OutlinedCircle(Point.Half, 0.1f, Color.Blue); Assert.AreEqual(Point.Half, circle.Center); Assert.AreEqual(0.1f, circle.Radius); Assert.AreEqual(Color.Blue, circle.Color); }
public void Center() { var circle = new OutlinedCircle(Point.Half, 0.1f) { Center = Point.One }; Assert.AreEqual(Point.One, circle.Center); circle.Radius = 0.1f; Assert.AreEqual(0.1f, circle.Radius); }
public static void Draw(this OutlinedCircle outlinedCircle, OpenGL gl) { Point3D center = outlinedCircle.Position; double r = outlinedCircle.Radius; double t = outlinedCircle.Thickness; gl.PushMatrix(); // Gère la rotation de l'objet gl.Translate(outlinedCircle.Position.X, outlinedCircle.Position.Y, outlinedCircle.Position.Z); gl.Rotate(outlinedCircle.Orientation.X, outlinedCircle.Orientation.Y, outlinedCircle.Orientation.Z); gl.Translate(-outlinedCircle.Position.X, -outlinedCircle.Position.Y, -outlinedCircle.Position.Z); // Dessine des points en enchaînant intérieur puis extérieur du périmètre du cercle (triangles reliés grâce à TRIANGLE_STRIP) gl.Begin(OpenGL.GL_TRIANGLE_STRIP); gl.Color(outlinedCircle.Color.R, outlinedCircle.Color.G, outlinedCircle.Color.B, outlinedCircle.Color.A); // Dessine le premier point pour commencer le cercle gl.Vertex((r - t) * Math.Cos(Math.PI / 180 * outlinedCircle.AngleStart) + center.X, (r - t) * Math.Sin(Math.PI / 180 * outlinedCircle.AngleStart) + center.Y, center.Z); gl.Vertex(r * Math.Cos(Math.PI / 180 * outlinedCircle.AngleStart) + center.X, r * Math.Sin(Math.PI / 180 * outlinedCircle.AngleStart) + center.Y, center.Z); // Dessine le point à l'intérieur puis celui à l'extérieur double incrementAngle = 15; for (double theta = outlinedCircle.AngleStart + incrementAngle; theta < outlinedCircle.AngleStop; theta += incrementAngle) { gl.Vertex((r - t) * Math.Cos(Math.PI / 180 * (theta - incrementAngle / 2)) + center.X, (r - t) * Math.Sin(Math.PI / 180 * (theta - incrementAngle / 2)) + center.Y, center.Z); gl.Vertex(r * Math.Cos(Math.PI / 180 * theta) + center.X, r * Math.Sin(Math.PI / 180 * theta) + center.Y, center.Z); } // Dessine le dernier point pour terminer le cercle gl.Vertex((r - t) * Math.Cos(Math.PI / 180 * outlinedCircle.AngleStop) + center.X, (r - t) * Math.Sin(Math.PI / 180 * outlinedCircle.AngleStop) + center.Y, center.Z); gl.Vertex(r * Math.Cos(Math.PI / 180 * outlinedCircle.AngleStop) + center.X, r * Math.Sin(Math.PI / 180 * outlinedCircle.AngleStop) + center.Y, center.Z); gl.End(); gl.PopMatrix(); }
private void Initialize() { Shape = new OutlinedCircle(); SetNodeBrush(Colors.White.AsBrush()); }
public void Radius() { var circle = new OutlinedCircle(Point.Half, 0.1f) { Radius = 0.2f, }; Assert.AreEqual(0.2f, circle.Radius); }
public void ColorProperty() { var circle = new OutlinedCircle(Point.Half, 0.1f) { Color = Color.Green }; Assert.AreEqual(Color.Green, circle.Color); }