Rectangle.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Drawing;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using OpenTK.Graphics.OpenGL;
  8. using MathNet.Numerics.LinearAlgebra.Single;
  9. namespace bbiwarg.Graphics
  10. {
  11. class Rectangle : IGraphicElement
  12. {
  13. public Vertex[] corners;
  14. public Color color;
  15. public Rectangle(Vertex[] corners, Color color)
  16. {
  17. this.corners = corners;
  18. this.color = color;
  19. }
  20. public void draw()
  21. {
  22. GL.Color4(color);
  23. GL.Begin(BeginMode.Polygon);
  24. GL.Vertex3(corners[0].x, corners[0].y, -corners[0].z);
  25. GL.Vertex3(corners[1].x, corners[0].y, -corners[0].z);
  26. GL.Vertex3(corners[1].x, corners[1].y, -corners[1].z);
  27. GL.Vertex3(corners[0].x, corners[1].y, -corners[1].z);
  28. GL.End();
  29. }
  30. public List<Vector> getVertices()
  31. {
  32. List<Vector> result = new List<Vector>();
  33. result.Add(new DenseVector(new float[] { corners[0].x, corners[0].y, -corners[0].z }));
  34. result.Add(new DenseVector(new float[] { corners[1].x, corners[0].y, -corners[0].z }));
  35. result.Add(new DenseVector(new float[] { corners[1].x, corners[1].y, -corners[1].z }));
  36. result.Add(new DenseVector(new float[] { corners[0].x, corners[1].y, -corners[1].z }));
  37. return result;
  38. }
  39. public uint[] getTriangleIndices()
  40. {
  41. return new uint[] { 0, 1, 2, 0, 2, 3 };
  42. }
  43. public Color getColor()
  44. {
  45. return color;
  46. }
  47. }
  48. }