Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace GeometryTasks
- {
- public class Vector
- {
- public double X;
- public double Y;
- public double GetLength()
- {
- return Geometry.GetLength(this);
- }
- public Vector Add(Vector vector)
- {
- return Geometry.Add(this, vector);
- }
- public bool Belongs(Segment segment)
- {
- return Geometry.IsVectorInSegment(this, segment);
- }
- }
- public static class Geometry
- {
- public static double GetLenght(Vector vector)
- {
- return Math.Sqrt(vector.X * vector.X + vector.Y * vector.Y);
- }
- public static Vector Add(Vector vector1, Vector vector2)
- {
- return new Vector { X = vector1.X + vector2.X, Y = vector1.Y + vector2.Y };
- }
- public static double GetLength(Segment segment)
- {
- return GetLength(Add(segment.Begin, new Vector { X = -segment.End.X, Y = -segment.End.Y }));
- }
- public static bool IsVectorInSegment(Vector vector, Segment segment)
- {
- return GetLength(Add(segment.Begin, new Vector { X = -segment.End.X, Y = -segment.End.Y }
- }
- public static bool IsVectorInSegment(Vector vector, Segment segment)
- {
- var lengthFromBeginToA = Math.Sqrt(Math.Pow(vector.X - segment.Begin.X, 2) +
- Math.Pow(vector.Y - segment.Begin.Y, 2));
- var lengthFromAtoEnd = Math.Sqrt(Math.Pow(segment.End.X - vector.X, 2) +
- Math.Pow(segment.End.Y - vector.Y, 2));
- return (lengthFromBeginToA + lengthFromAtoEnd == GetLength(segment));
- }
- }
- public class Segment
- {
- public Vector Begin;
- public Vector End;
- public double GetLength(Segment segment)
- {
- return Geometry.GetLength(segment);
- }
- public bool Contains(Vector vector)
- {
- return Geometry.IsVectorInSegment(vector, this);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement