Нахождение точки на плоскости - 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; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д