Нахождение точки на плоскости - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день, имею такую задачу :
Описать интерфейс IPolynomial, соответствующий многочленам. Он должен содержать методы IsAbove и IsBelow, проверяющие, находится ли ука- занная точка на плоскости строго выше или ниже графика многочлена соответ- ственно. Описать классы Linear (линейный) и Quadratic (квадратный), реализующие этот интерфейс. Написать функцию IsBetween, принимающую два многочлена и координаты точки и проверяющую, находится ли точка выше первого и ниже второго многочлена. Написать программу, использующую эту функцию. Построить UML-диаграмму.
Имею ряд вопросов, начнем по порядку : как проверить находится точка выше или ниже ? как вообще эт реализовать ?) Интерфейс и классы я написал, а все остальное чет не понятно , как сделать... можете помочь ?
Листинг программы
  1. interface IPolynomial
  2. {
  3. void IsAbove();
  4. void IsBellow();
  5. }
  6. class Linear {
  7. void Isabove();
  8. void IsBellow();
  9. }
  10. class Quadratic
  11. {
  12. void Isabove();
  13. void IsBellow();
  14. }
с кодом может быть я справлюсь, можете чисто математически объяснить, как проверить находится ли точка (x,y) выше или ниже графика многочлена

Решение задачи: «Нахождение точки на плоскости»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace ConsoleApplication1
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             var linear = new Linear(); //y=x
  13.             var quadratic = new Quadratic(1,0,-1); //y = x^2 - 1
  14.  
  15.             var p = new Point(10,11);
  16.             Console.WriteLine(linear.IsAbove(p));
  17.  
  18.             p = new Point(3, 7);
  19.             Console.WriteLine(quadratic.IsBelow(p));
  20.  
  21.             p = new Point(0, -0.5);
  22.             Console.WriteLine(IsBetween(p,quadratic,linear));
  23.  
  24.  
  25.  
  26.             Console.ReadKey();
  27.         }
  28.  
  29.         static bool IsBetween(Point _P, IPolynomial p1, IPolynomial p2)
  30.         {
  31.             return p1.IsAbove(_P) && p2.IsBelow(_P);
  32.         }
  33.  
  34.     }
  35.  
  36.     interface IPolynomial
  37.     {
  38.         bool IsAbove(Point _p);
  39.         bool IsBelow(Point _p);
  40.     }
  41.  
  42.     class Linear : IPolynomial
  43.     {
  44.         double a,b;        
  45.                
  46.         Func<double, double> Func(double _a, double _b)
  47.         {
  48.             return arg => _a * arg + _b;
  49.         }
  50.  
  51.         public bool IsAbove(Point _p)
  52.         {            
  53.             return _p.Y > Func(a, b)(_p.X);
  54.         }
  55.  
  56.         public bool IsBelow(Point _p)
  57.         {
  58.             return _p.Y < Func(a, b)(_p.X);
  59.         }
  60.  
  61.         //public double Y(double _x) { return Func(a, b)(_x); }
  62.  
  63.         public Linear() { a = 1; b = 0; }
  64.         public Linear(double _a, double _b) { a = _a; b = _b; }
  65.  
  66.     }
  67.  
  68.     class Quadratic : IPolynomial
  69.     {
  70.         double a, b, c;
  71.  
  72.         Func<double, double> Func(double _a, double _b , double _c)
  73.         {
  74.             return arg => _a * arg * arg + _b * arg + _c;
  75.         }
  76.  
  77.         public bool IsAbove(Point _p)
  78.         {
  79.             return _p.Y > Func(a, b, c)(_p.X);
  80.         }
  81.  
  82.         public bool IsBelow(Point _p)
  83.         {
  84.             return _p.Y < Func(a, b, c)(_p.X);
  85.         }
  86.  
  87.         //public double Y(double _x) { return Func(a, b, c)(_x); }
  88.  
  89.         public Quadratic() { a = 1; b = 0; c = 0; }
  90.         public Quadratic(double _a, double _b, double _c) { a = _a; b = _b; c = _c; }
  91.  
  92.     }
  93.    
  94.  
  95.     struct Point {
  96.        
  97.         public double X;
  98.         public double Y;
  99.  
  100.         public Point(double _x, double _y) {
  101.             X = _x;
  102.             Y = _y;        
  103.         }
  104.     }
  105.  
  106.  
  107.  
  108.  
  109. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы