mikhailemv

Untitled

Dec 6th, 2021
676
317 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2.  
  3. namespace GeometryTasks
  4. {
  5.     public class Segment
  6.     {
  7.         public Vector Begin;
  8.         public Vector End;
  9.  
  10.         public double GetLength()
  11.         {
  12.             return Geometry.GetLength(this);
  13.         }
  14.  
  15.         public bool Contains(Vector point)
  16.         {
  17.             return Geometry.IsVectorInSegment(point, this);
  18.         }
  19.     }
  20.  
  21.     public class Vector
  22.     {
  23.         public double X;
  24.         public double Y;
  25.  
  26.         public double GetLength()
  27.         {
  28.             return Geometry.GetLength(this);
  29.         }
  30.  
  31.         public Vector Add(Vector otherVector)
  32.         {
  33.             return Geometry.Add(this, otherVector);
  34.         }
  35.  
  36.         public bool Belongs(Segment segment)
  37.         {
  38.             return Geometry.IsVectorInSegment(this, segment);
  39.         }
  40.     }
  41.  
  42.     public class Geometry
  43.     {
  44.         public static double GetLength(Segment segment)
  45.         {
  46.             return Math.Sqrt((segment.End.X - segment.Begin.X) * (segment.End.X - segment.Begin.X) +
  47.                 (segment.End.Y - segment.Begin.Y) * (segment.End.Y - segment.Begin.Y));
  48.         }
  49.  
  50.         public static double GetLength(Vector point)
  51.         {
  52.             return Math.Sqrt(point.X * point.X +
  53.                 point.Y * point.Y);
  54.         }
  55.  
  56.         public static Vector Add(Vector firstVector, Vector secondVector)
  57.         {
  58.             return new Vector()
  59.             {
  60.                 X = firstVector.X + secondVector.X,
  61.                 Y = firstVector.Y + secondVector.Y
  62.             };
  63.         }
  64.  
  65.         public static bool IsVectorInSegment(Vector point, Segment segment)
  66.         {
  67.             var firstPoint = new Vector()
  68.             {
  69.                 X = segment.Begin.X - point.X,
  70.                 Y = segment.Begin.Y - point.Y
  71.             };
  72.  
  73.             var secondPoint = new Vector()
  74.             {
  75.                 X = segment.End.X - point.X,
  76.                 Y = segment.End.Y - point.Y
  77.             };
  78.  
  79.             return Math.Abs(GetLength(firstPoint) + GetLength(secondPoint) - GetLength(segment)) < 1e-9;
  80.         }
  81.     }
  82. }
RAW Paste Data