Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

Wykres Funkcji w Javie

#1
Wykres Funkcji w Javie
Witam od pewnego czasu a właściwie wstyd się przyznać od dwóch dni próbuje napisać aplikacje w Javie która po podaniu parametrów a,b,c funkcji kwadratowej nakreśli jej wykres.O ile udało mi się napisać kod który generuje układ współrzędnych i wykres(ale niestety nie pokrywają się miejsca zerowe oraz wierzchołek paraboli z współrzędnymi) to nie mam pojęcia jak zmusić metodę drawLine() do przejścia przez miejsca zerowe x1,x2 oraz wierzchołek paraboli.
Zaznaczam że interesuje mnie czy jest to wykonywalne przy pomocy metody drawLine().Jeśli jest to możliwe to proszę w punktach od czego zacząć.
Dzięki za wszelkie wskazówki
 System operacyjny: windows_eight Przeglądarka: ie
#2
RE: Wykres Funkcji w Javie
Witam, czy mógłbyś pokazać, w jaki sposób generujesz wykres? Wygląda na to, że dla miejsc zerowych i wierzchołka paraboli nie liczysz wartości funkcji, dlatego linia nie przechodzi dokładnie przez te punkty.
 System operacyjny: linux_ubuntu Przeglądarka: firefox
#3
RE: Wykres Funkcji w Javie
Dziękuję za odpowiedź program generuje wykres na panelu o rozmiarach 800*800.

Kod:
Code:
public class Wykres extends JPanel {


Interface i = new Interface();

JFrame o = i.okno;

double a = i.getliczbaa();

double b = i.getliczbab();

double c = i.getliczbac();

public double x = 0;


public double f(double x) {

return (a*x*x)+(b*x)+c;

}


public Wykres() {

setPreferredSize(new Dimension(800, 800));

}


public void paintComponent(Graphics g)

{

super.paintComponent(g);

g.drawLine(0, 400, 800, 400);

g.drawLine(400, 0, 400, 800);

double sizex = 800.0;

double sizey = 800.0;

int maxx = 10;

int minx = -10;

int maxy = 100;

int miny = -100;

double yunit = sizey/(maxy-miny);

int pixel = 0;

while (pixel<800)

{

double x = -10 + 0.025*pixel;

double x2 = -10 + 0.025*(pixel+1);

int y = 400 - (int)(f(x)*yunit);

int y2 = 400 - (int)(f((x2))*yunit);

g.drawLine(pixel, y, (pixel+1), y2);

pixel++;

}

}

}

Właśnie nie wiem jak po obliczeniu delty miejsc zerowych i wierzchołka zmusić drawLine() aby wykres przeszedł przez wszystkie te punkty.
Wczoraj grzebiąc jeszcze w internecie znalazłem na innym forum: https://4programmers.net/Forum/Java/2335...graficznym
użytkownika który miał podobny problem ale z funkcją liniową. Moderator zasugerował mu złe przeliczanie pixeli na jednostkę. I tu moje pytanie jak Moderator tamtego forum podał  wzór y = a  i + b + 200 - 200a; Ja nie potrafię z tych trzech wzorów uzyskać takiego jak powyższy. Dlaczego z wzoru giną wartości 40 i ostatnia wartość 200 jest mnożona przez a, skąd to wyszło?
Przepraszam z góry za tyle pytań ale jak to mówią tonący brzytwy się chwyta.
 System operacyjny: windows_eight Przeglądarka: ie
#4
RE: Wykres Funkcji w Javie
Jeśli przemieszczasz się od piksela do piksela, to dziwne, że jakimś sposobem omijasz miejsca zerowe. Napisałem samemu i u mnie jakoś działa (poniżej masz fragment kodu źródłowego).
Kod:
public NewJPanel(int w, int h, double xd, double xg, double yd, double yg, double a, double b, double c) {
        initComponents();

        setSize(new Dimension(w, h));
        this.xd = xd;
        this.yd = yd;
        this.xg = xg;
        this.yg = yg;
        this.a = a;
        this.b = b;
        this.c = c;
    }

    public void paint(Graphics g) {
        super.paint(g);

        g.setColor(Color.black);
        if (xd < 0 && xg > 0)
            g.drawLine((int)(-xd/(xg-xd)*getWidth()), 0, (int)(-xd/(xg-xd)*getWidth()), getHeight());
        if (yd < 0 && yg > 0)
            g.drawLine(0, (int)(getHeight()*(1+yd/(yg-yd))), getWidth(), (int)(getHeight()*(1+yd/(yg-yd))));

        g.setColor(Color.blue);
        double x1 =xd, x2, y1 = a*x1*x1 + b*x1 + c, y2;
        for (int px = 1; px < getWidth(); px++) {
            x2 = px*(xg-xd)/getWidth()+xd;
            y2 = a*x2*x2 + b*x2 + c;
            g.drawLine((int)((x1-xd)/(xg-xd)*getWidth()), (int)(getHeight()*(1-(y1-yd)/(yg-yd))), (int)((x2-xd)/(xg-xd)*getWidth()), (int)(getHeight()*(1-(y2-yd)/(yg-yd))));
            x1 = x2;
            y1 = y2;
        }
    }

    private final double xd, yd, xg, yg, a, b, c;
 System operacyjny: linux_ubuntu Przeglądarka: firefox
#5
RE: Wykres Funkcji w Javie
Szachisto wielkie dzięki za odpowiedź i za fatygę że chciało ci się napisać ten powyższy kod.
Ja daje sobie jeszcze 2 dni żeby napisać to samemu, muszę do tego dojść sam. Zawsze będę w ostateczności mógł się poratować twoim kodem,bardzo,bardzo dziękuje.
Pozdrawiam
 System operacyjny: windows_eight Przeglądarka: ie
Programy: Polecane / Nowe / Inne




Podobne wątki (Wykres Funkcji w Javie)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  VisualBasic - tablicowanie wartości funkcji . samanta19 2 8882 20.01.2017, 01:01
Ostatni post: samanta19
  [C++] Zwracanie dwóch wartości z funkcji (szukanie w. maksymalnej - tablica) Chudy2000 3 9554 16.06.2016, 08:10
Ostatni post: Szachista
Ściana Wywoływanie funkcji z tabelą jako argumentem jackhalabardnik 2 9967 22.03.2016, 21:20
Ostatni post: jackhalabardnik

Skocz do:


Wybrane wątki (Wykres Funkcji w Javie)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Kompilator C++ 17 Physicist 14 1302 26.11.2020 13:56
Ostatni post: Physicist
  Nieprawidłowy format ciągu wejściowego. radman 9 1334 05.11.2020 22:08
Ostatni post: Bodzio Chomik
  Wybór języka Xyio 5 1477 30.10.2020 15:07
Ostatni post: bartexo23
  Skrypt usuwający pliki azds1 1 845 13.10.2020 08:45
Ostatni post: Michu_PL
  Mam mały problem ze zrobieniem tego programu Asasin12PL 2 1490 12.10.2020 17:10
Ostatni post: Asasin12PL
  Skrypt pod sklep internetowy Talcia 6 11153 24.09.2020 22:20
Ostatni post: Ajgor
  Książki do nauki C# olek23 16 28181 28.08.2020 09:51
Ostatni post: Ajgor
  [VBA Excel] Wyszukiwanie wartości w kolumnie Pioro 2 5089 22.06.2020 18:27
Ostatni post: Pioro
  Validacja JS kolo48 3 6830 16.04.2020 14:06
Ostatni post: koneton
  Automatyczne wykonywanie czynności na stronie Fresher 0 5804 15.04.2020 20:53
Ostatni post: Fresher
  Visual Studio Code- zmiana folderu rozszerzeń Physicist 4 7815 05.04.2020 15:46
Ostatni post: Physicist
  Prośba o pomoc przy wyborze języka do konkretnego projektu. romands 6 7035 05.04.2020 14:07
Ostatni post: romands
Sad PhpMyAdmin w Mysql 8.0 Lauczi 3 6872 31.03.2020 16:34
Ostatni post: Lauczi
Ściana Klika pytań plz pomóżcie Samek2222 1 6497 22.03.2020 18:59
Ostatni post: Ajgor
  Pytanie - programowanie batch [cmd] Max23 0 6421 20.03.2020 01:03
Ostatni post: Max23