Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. // ===++===
  2. //
  3. //  OrtizOL
  4. //
  5. // ===--===
  6. /*============================================================
  7. //
  8. // Clase: Triangulo.cs
  9. // Original en: http://goo.gl/Eygqtl
  10. //
  11. // Propósito: Representar la entidad Triangulo del modelo.
  12. //
  13. ============================================================*/
  14. using System;
  15. using System.Collections.Generic;
  16. using System.Linq;
  17. using System.Text;
  18. using System.Threading.Tasks;
  19.  
  20. namespace ElTriangulo.Modelo
  21. {
  22.     /// <summary>
  23.     /// Representa la entidad Triángulo.
  24.     /// </summary>
  25.     public class Triangulo
  26.     {
  27.         #region Campos
  28.         /// <summary>
  29.         /// Punto (o vértice) no. 1 del triángulo
  30.         /// </summary>
  31.         private Punto punto1;
  32.         /// <summary>
  33.         /// Punto (o vértice) no. 2 del triángulo.
  34.         /// </summary>
  35.         private Punto punto2;
  36.         /// <summary>
  37.         /// Punto (o vértice) no. 3 del triángulo.
  38.         /// </summary>
  39.         private Punto punto3;
  40.         /// <summary>
  41.         /// Color de las líneas del triángulo.
  42.         /// </summary>
  43.         private Color colorLineas;
  44.         /// <summary>
  45.         /// Color de relleno del triángulo.
  46.         /// </summary>
  47.         private Color colorRelleno;
  48.         #endregion
  49.  
  50.         #region Propiedades
  51.         /// <summary>
  52.         /// Accede y recupera el punto (o vértice) 1 del triángulo.
  53.         /// </summary>
  54.         public Punto Punto1
  55.         {
  56.             get
  57.             {
  58.                 return punto1;
  59.             }
  60.             set
  61.             {
  62.                 punto1 = value;
  63.             }
  64.         }
  65.         /// <summary>
  66.         /// Accede y recupera el punto (o vértice) 2 del triángulo.
  67.         /// </summary>
  68.         public Punto Punto2
  69.         {
  70.             get
  71.             {
  72.                 return punto2;
  73.             }
  74.             set
  75.             {
  76.                 punto2 = value;
  77.             }
  78.         }
  79.         /// <summary>
  80.         /// Accede y recupera el punto (o vértice) 3 del triángulo.
  81.         /// </summary>
  82.         public Punto Punto3
  83.         {
  84.             get
  85.             {
  86.                 return punto3;
  87.             }
  88.             set
  89.             {
  90.                 punto3 = value;
  91.             }
  92.         }
  93.         /// <summary>
  94.         /// Accede y reupera el color de relleno del triángulo.
  95.         /// </summary>
  96.         public Color ColorRelleno
  97.         {
  98.             get
  99.             {
  100.                 return colorRelleno;
  101.             }
  102.             set
  103.             {
  104.                 colorRelleno = value;
  105.             }
  106.         }
  107.         /// <summary>
  108.         /// Accede y recupera el color de las líneas del triángulo.
  109.         /// </summary>
  110.         public Color ColorLineas
  111.         {
  112.             get
  113.             {
  114.                 return colorLineas;
  115.             }
  116.             set
  117.             {
  118.                 colorLineas = value;
  119.             }
  120.         }
  121.         #endregion
  122.  
  123.         #region Constructores
  124.         /// <summary>
  125.         /// Construye un triángulo con tres puntos, color de relleno, y color de líneas.
  126.         /// </summary>
  127.         /// <param name="punto1">Punto 1 del triángulo.</param>
  128.         /// <param name="punto2">Punto 2 del triángulo.</param>
  129.         /// <param name="punto3">Punto 3 del triángulo.</param>
  130.         /// <param name="relleno">Color de relleno del triángulo.</param>
  131.         /// <param name="lineas">Color de las líneas del triángulo.</param>
  132.         public Triangulo(Punto punto1, Punto punto2, Punto punto3, Color relleno, Color lineas)
  133.         {
  134.             this.punto1 = punto1;
  135.             this.punto2 = punto2;
  136.             this.Punto3 = punto3;
  137.             this.colorRelleno = relleno;
  138.             this.colorLineas = lineas;
  139.         }
  140.         #endregion
  141.  
  142.         #region Métodos
  143.         /// <summary>
  144.         /// Calcula el perímetro del triángulo.
  145.         /// </summary>
  146.         /// <returns>El perímetro del triángulo.</returns>
  147.         public double CalcularPerimetro()
  148.         {
  149.             return CalcularLado1() + CalcularLado2() + CalcularLado3();
  150.         }
  151.         /// <summary>
  152.         /// Calcula el área del triángulo (en px^2).
  153.         /// </summary>
  154.         /// <returns>El área del triángulo en px^2.</returns>
  155.         public double CalcularArea()
  156.         {
  157.             double s = CalcularPerimetro() / 2;
  158.  
  159.             double valorLado1 = s - CalcularLado1();
  160.             double valorLado2 = s - CalcularLado2();
  161.             double valorLado3 = s - CalcularLado3();
  162.  
  163.             return Math.Sqrt(s * valorLado1 * valorLado2 * valorLado3);
  164.         }
  165.         /// <summary>
  166.         /// Calcula la altura del triángulo en px.
  167.         /// </summary>
  168.         /// <returns>La altura del triángulo.</returns>
  169.         public double CalcularAltura()
  170.         {
  171.             return (CalcularArea() / CalcularLado1()) * 2;
  172.         }
  173.         /// <summary>
  174.         /// Calcula la distancia del punto 1 al punto 2.
  175.         /// </summary>
  176.         /// <returns>Distancia del punto 1 al punto 2 (en px).</returns>
  177.         private double CalcularLado1()
  178.         {
  179.             double x = Math.Pow(punto1.X - punto2.X, 2);
  180.             double y = Math.Pow(punto1.Y - punto2.Y, 2);
  181.  
  182.             return Math.Sqrt(x + y);
  183.         }
  184.         /// <summary>
  185.         /// Calcula la distancia del punto 2 al punto 3.
  186.         /// </summary>
  187.         /// <returns>Distancia del punto 2 al punto 3 (en px).</returns>
  188.         private double CalcularLado2()
  189.         {
  190.             double x = Math.Pow(punto2.X - punto3.X, 2);
  191.             double y = Math.Pow(punto2.Y - punto3.Y, 2);
  192.  
  193.             return Math.Sqrt(x + y);
  194.         }
  195.         /// <summary>
  196.         /// Calcula la distancia del punto 3 al punto 1.
  197.         /// </summary>
  198.         /// <returns>Distancia del punto 3 al punto 1.</returns>
  199.         private double CalcularLado3()
  200.         {
  201.             double x = Math.Pow(punto3.X - punto1.X, 2);
  202.             double y = Math.Pow(punto3.Y - punto1.Y, 2);
  203.  
  204.             return Math.Sqrt(x + y);
  205.         }
  206.         #endregion
  207.  
  208.         #region Métodos de Extension
  209.         /// <summary>
  210.         /// Punto de extensión no. 1.
  211.         /// </summary>
  212.         /// <returns>Mensaje de respuesta.</returns>
  213.         public string MetodoExtension1()
  214.         {
  215.             return "Respuesta 1";
  216.         }
  217.         /// <summary>
  218.         /// Punto de extensión no. 2.
  219.         /// </summary>
  220.         /// <returns>Mensaje de respuesta.</returns>
  221.         public string MetodoExtension2()
  222.         {
  223.             return "Respuesta 2";
  224.         }
  225.         #endregion
  226.     }
  227. }