Пример #1
0
 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);
 }
Пример #2
0
 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);
 }
Пример #3
0
        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();
        }
Пример #4
0
 private void Initialize()
 {
     Shape = new OutlinedCircle();
     SetNodeBrush(Colors.White.AsBrush());
 }
Пример #5
0
 public void Radius()
 {
     var circle = new OutlinedCircle(Point.Half, 0.1f) { Radius = 0.2f, };
     Assert.AreEqual(0.2f, circle.Radius);
 }
Пример #6
0
 public void ColorProperty()
 {
     var circle = new OutlinedCircle(Point.Half, 0.1f) { Color = Color.Green };
     Assert.AreEqual(Color.Green, circle.Color);
 }