odczyt danych z wykresu

0

piszę program, który:

  • wczytujemy wykres
    *wyznaczamy 3 punkty będące początkiem układu wsp., max x, max y wraz zwartościami
  • następnie wyklikujemy wykres z obrazka -> w sensie żę klikamy kolejne punkty na wykresie będące częściami krzywych
    *wszytko pojawia się w tabelce pod wykresem i jeśli chodzi o oś y to program mi przelicza ładnie współrzędne na odpowienie wartości temperatury
  • problem mam z przeliczaniem osi X gdzie rozkład wartości nie jest liniowy i nie wiem jak mam go przeliczyć
    wczucam kod przeliczania wartośći Y:
	public double  przeliczanieWartosciY(String MaxY, String kordY, int kordYmax){


				
		
		return (double)((Integer.parseInt(kordY) * Integer.parseInt(MaxY))/kordYmax);
	}

wykres zamieszczam w załączniku

0

Konwersja wartości A z zakresu Amin .. Amax na zakres Bmin .. Bmax:
B=(Bmax*(A-Amin)+Bmin*(Amax-A))/(Amax-Amin)

0

Zauważ, że to co napisałeś odnosi się do rozkładu liniowego na osi wykresu i jest tym samym wzorem, który realizuje moja metoda dla osi Y (min. wartości to 0 więc skracając wychodzi moja metoda), mi chodzi o to jak policzyć oś X gdzie wartości rosną nie liniowo, a logarytmicznie chyba. i to jest mój problem. Jako dane mam współrzędne pobrane przez klikanie plus znam wartość min 0 oraz max 1000000 czasu

0

dodałem tak:
double czas =Math.exp((Math.log(1000000)*(Math.log(Double.parseDouble(kordX))-Math.log(0.0001))+Math.log(0.0001)*(Math.log(218)-Math.log(Double.parseDouble(kordX))))/(Math.log(218)-Math.log(0.0001)));

i niedziała prawidłowo

max b to 1000000
kordX to A
min A i B przyjąłem 0.0001 bo zero nie może być
a A max 218 maksymalna współrzędna A

niewiem gdzie błąd robię;/

0

dla kordX 0.0001 wartość czasu powinna być 0.0001 ( właściewie kordX najmniej może mieć 0 wieć dlawynikiem będzie 0)
218 - 1000000
a dla 109 coś ponad 1000 s ( na oko bo nie mam tutaj swojego programu)

0

mówiłem na oko czyli tak -> max współrzędna to 218, 109 to połowa a w połowie długości na osi X jest wartość 1000, po prostu odczytałem z wykresu

0
Gelhrid napisał(a):

dla kordX 0.0001 wartość czasu powinna być 0.0001 ( właściewie kordX najmniej może mieć 0 wieć dlawynikiem będzie 0)
218 - 1000000
a dla 109 coś ponad 1000 s ( na oko bo nie mam tutaj swojego programu)

to jest na pewno dobrze bo to na okno odczytać można z wykresu.
Nie wiem jak to programem obliczać

rozumiem, że wartości A to współrzędne na wykresie (dla uproszczenie przyjmijmy, że zajmujemy się tylko osią czasu X)
czyli a0 -> Amin to początek układu czyli 0 odpowiadająca Bminimum czyli czasie 0 sekund
natomiast Amax jest to współrzędna największa czyli po odczycie wpsółrzędnych wychodzi 218 -> najdalszy punkt na osi X, odpowiada ona w moim rozumieniu wielkość bmax czyli 1000000s
jak widać na wykresie rząd wielkośći osi x zwieksza się co odcinek , który jest tej samej wielkość (1,10,100,1000,...)
a - 109 jest w połowie wykresu a z wwykresu można odczytać, że od 109 wielkość są >1000

tak ja to rozumiem i neiwiem jak to przeliczyć na wartości B stosując Twój wzór

//////////////////////////////////////

Ogólnie rozwiązałem właśnie swój problem aby zamknąć teamat opisze o co chodziło w sobotę

0

Ogólnie próbowałem zastasować swój/ twój wzór na przeliczanie odcinka dla całego odcinka i dlatego to neidziałało, dodałem metodę która dzieli całą oś X na części o odpowiednich zakresach i sprawdza w którym zakresie jest nasz kordX i dla takiego punktu w danym odcinku stosowany jest dopiero wzór
wszytko ładnie pięknie śmiga dzięki za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1