Java [1242]

Zapisz się
Dodaj kartkę Dodaj bana
Powód wlepienia kartki
Wybierz wątek docelowy z listy lub wpisz jego ID
  • czoobs

    Czesc, czy ktos z was kiedys pisal cos takiego? Nie moge sobie poradzic z tym wykresem, roznych trikoof probowalem ale bez skutku :P Jestem raczej nowicjuszem w Javie. Jak ktos jest w stanie pomoc to zapraszam to wypowiedzi :)
  • spec

    wklej kod ktory nie dziala, to moze cos sie da zrobic...
  • czoobs

    ooo wreszcie ktos sie odezwal!; ) Kodu chyba nie ma co wklejac bo nic tam nie ma oprocz instrukcji rysujacych uklad wspolrzednych...reszte usunalem bo byla bez sensu.

    Problem jest mianowicie taki:


    Teoretycznie arc sin(x) jest ograniczony na dziedzinie <-1,1>, ale w praktyce w moim aplecie odleglosc pomiedzy -1 a 1 to jakies 70. No i teraz powstaje pytanie jak to zrobic zeby wykres byl rzeczywiscie rozciagniety graficznie miedzy -1 a 1, skoro nie mam wartosci np 62 dla arc sin(x). Inne moje problemy to w ogole, przesuniecie srodka ukladu wspolrzednych do punkt w ktorym rzeczywiscie moje osie sie przecinaja ( ale z tym chyba sobie akurat poradzilem ostatnio po prostu do wynikow dodajac odpowiednie liczby, chociaz czuje ze nie wzialem wszystkiego pod uwage :/ )

  • spec

    musisz przeskalowac wartosci i albo:
    1)w glownej petli dajesz od -70 do +70 dla x
    i dzielisz to przez 70 przed podstawieniem do arcsin wtedy masz wartosci znormalizowane od -1 do 1
    albo 2)
    w glownej petli dajesz od -1 do 1 i krok co 1/70, podstawiasz ta wartosc do arcsin, ale pixel stawiasz w punkcie x * 70 + moj_srodek_wps_na_ekranie


    dasz rade tylko pomysl...
  • czoobs

    yeah, wlasnie uzyskales status mojego guru; ) Teraz to wydaje sie byc takie oczywiste a nie moglem do tego dojsc :P dzieki dzieki dzieki!!!
  • czoobs

    Dobra, moze sie wydurnie ale really jestem zielony w tym i mam kolejny problem. Wszystko sie zgadza rzeczywiscie, ale chcialem "powiekszyc" ten wykres wiec pomnozylem wartosc y*25 i powiekszylo sie, ale o ile przy najmniejszych wartosciach jest zachowana jednolitosc to juz jak sie zbliza do jedynki wykres staje sie kropkami. Wiem dlaczego tak sie dzieje, zeby nie bylo ze jestem ignorantem matematycznym; ) ale nie wiem jak "zalatac" ten wykres. Wklejam kod ( mizerny, nie smiac sie ):

    import java.awt.*;
    import java.applet.*;

    public class applet5 extends java.applet.Applet
    {
    int x,y;
    float i;

    public void paint(Graphics g)
    {

    g.setColor(Color.white);
    g.fillRect(0,0,200,200);

    g.setColor(Color.black);

    g.drawLine(5,100,195,100);/ / Os OX
    g.drawLine(100,5,100,195);/ / Os OY

    g.drawLine(195,100,192,97);/ / grot osi OX
    g.drawLine(195,100,192,103);

    g.drawLine(100,5,97,8);/ / grot osi OX
    g.drawLine(100,5,103,8);

    g.drawLine(130,98,130,102);
    g.drawLine(70,98,70,102);

    g.drawString("1",127,120);
    g.drawString("-1",60,120);

    / / Rysowanie wykresu

    g.setColor(Color.red);

    for(i=-30;i<=30;i++)
    {
    x=(int)(i+100);
    y=(int)(-(Math.asin(i/30)*25)+ 100);
    g.drawLine(x,y,x,y);
    }


    }
    }
  • spec

    hej a nie mozesz przechowywac w zmiennych tymczasowych poprzednich wspolrzednych i rysowac linie od poprzednich do biezacych?

    wtedy to zalatwi sprawe
    zobacz:

    int lastX = 70;
    int lastY = 50; / /cos w ten desen
    for(i=-30;i<=30;i++)
    {
    x=(int)(i+100);
    y=(int)(-(Math.asin(i/30)*25)+ 100);
    g.drawLine(lastX,lastY,x,y);
    lastX = x;
    lastY = y;

    }
    proste ??
  • czoobs

    Hrehre mowilem, ze jestem noobem w tych sprawach; ) Dzieki raz jeszcze!!!