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

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

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

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

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

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var linear = new Linear(); //y=x
            var quadratic = new Quadratic(1,0,-1); //y = x^2 - 1
 
            var p = new Point(10,11);
            Console.WriteLine(linear.IsAbove(p));
 
            p = new Point(3, 7);
            Console.WriteLine(quadratic.IsBelow(p));
 
            p = new Point(0, -0.5);
            Console.WriteLine(IsBetween(p,quadratic,linear));
 
 
 
            Console.ReadKey();
        }
 
        static bool IsBetween(Point _P, IPolynomial p1, IPolynomial p2)
        {
            return p1.IsAbove(_P) && p2.IsBelow(_P);
        }
 
    }
 
    interface IPolynomial
    {
        bool IsAbove(Point _p);
        bool IsBelow(Point _p);
    }
 
    class Linear : IPolynomial
    {
        double a,b;        
               
        Func<double, double> Func(double _a, double _b)
        {
            return arg => _a * arg + _b;
        }
 
        public bool IsAbove(Point _p)
        {            
            return _p.Y > Func(a, b)(_p.X);
        }
 
        public bool IsBelow(Point _p)
        {
            return _p.Y < Func(a, b)(_p.X);
        }
 
        //public double Y(double _x) { return Func(a, b)(_x); }
 
        public Linear() { a = 1; b = 0; }
        public Linear(double _a, double _b) { a = _a; b = _b; }
 
    }
 
    class Quadratic : IPolynomial
    {
        double a, b, c;
 
        Func<double, double> Func(double _a, double _b , double _c)
        {
            return arg => _a * arg * arg + _b * arg + _c;
        }
 
        public bool IsAbove(Point _p)
        {
            return _p.Y > Func(a, b, c)(_p.X);
        }
 
        public bool IsBelow(Point _p)
        {
            return _p.Y < Func(a, b, c)(_p.X);
        }
 
        //public double Y(double _x) { return Func(a, b, c)(_x); }
 
        public Quadratic() { a = 1; b = 0; c = 0; }
        public Quadratic(double _a, double _b, double _c) { a = _a; b = _b; c = _c; }
 
    }
    
 
    struct Point {
        
        public double X;
        public double Y;
 
        public Point(double _x, double _y) {
            X = _x;
            Y = _y;        
        }
    }
 
 
 
 
}

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


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

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

14   голосов , оценка 3.857 из 5
Похожие ответы