Witam!
Piszę sobie program konsolowy rysujacy wykres funkcji w prymitywnej konsoli.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Wykresy_funkcji_konsola
{
class Program
{
static void Main(string[] args)
{
Console.ForegroundColor = ConsoleColor.DarkRed;
double a = 0, b = 0, c = 0;
double srodek = 0; // srodek ukladu wspolrzednych
double funkcja = 0;
int xos = 0;
int yos = 0;
char znak = '*'; // znak którym rysujemy wykresy
Console.SetWindowSize(50, 50); // ustalamy rozmiar okna
////////////// pobieranie danych od uzytkownika ///////////////
Console.WriteLine("Podaj a: ");
a = double.Parse(Console.ReadLine());
Console.WriteLine("Podaj b: ");
b = double.Parse(Console.ReadLine());
Console.WriteLine("Podaj c: ");
c = double.Parse(Console.ReadLine());
/////////////////////////////////////////////////////////////
for (int i = 0; i < 50; i++) // os OX
{
Console.SetCursorPosition(i, 25);
Console.Write("-");
}
for (int i = 0; i < 50; i++) // os OY
{
Console.SetCursorPosition(25, i);
Console.Write("|");
}
// funkcja y = a*x*x + b*x + c
for (int i = -25; i < 25; i++)
{
funkcja = ((a * i * i) + (b * i) + c);
if ((-funkcja + 25) > 0)
{
Console.SetCursorPosition(Convert.ToInt32(i + 25), Convert.ToInt32(-funkcja + 25));
Console.Write(znak);
}
}
///////// przeksztalcamy funkcje do postaci kanonicznej y = a*(x-p)^2+q aby latwiej przesówać jej wykres
double postac_kanoniczna = 0;
double p = 0, q = 0;
double delta = (b * b) - (4 * a * c);
p = (-b / (2 * a));
q = (-delta/(4*a));
for (int i = -25; i < 25; i++)
{
postac_kanoniczna = (a * ((i - p) * (i - p))) + q;
if ((-funkcja + 25) > 0)
{
Console.SetCursorPosition(Convert.ToInt32(i + 25), Convert.ToInt32(-postac_kanoniczna + 25));
Console.Write(znak);
}
if (Console.KeyAvailable)
{
if (Console.ReadKey().Key == ConsoleKey.LeftArrow)
{
p++;
Console.WriteLine(znak);
}
else if (Console.ReadKey().Key == ConsoleKey.RightArrow)
{
p--;
}
else if (Console.ReadKey().Key == ConsoleKey.UpArrow)
{
q++;
}
else if (Console.ReadKey().Key == ConsoleKey.DownArrow)
{
q--;
}
}
}
Console.ReadLine();
}
}
}
Pobieram od użytkownika z klawiatury parametry a,b,c.
Następnie sprowadziłem funkcje do postaci kanonicznej gdyż chcę później przy użyciu strzałek przesuwać wykres funkcji.
I tutaj własnie jest problem. Jak to zrobić?
Pozdrawiam i z góry dziękuję :)