Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Wiadomości - tmj

Strony: 1 ... 92 93 [94] 95 96
2791
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 19 Stycznia 2017, 22:10:05 »
Ja tez bylem kiedys mlody i mialem dobre oczy. ;d

2792
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 19 Stycznia 2017, 21:09:54 »
formatowanie wyglada jak wyglada, bo kazdy robi tak, jak jest przyzwyczajony, a standardow jest tyle ile programistow + 1 ;)

2 spacje sa wg mnie raczej nieczytelne; przy wiekszym monitorze w niektorych ukladach zaczynasz sie zastanawiac czy to wciecie czy tylko cie oczy myla. A i zagniezdzen nie ma co za bardzo splaszczac -- jak ci zaczyna linia wychodzic za ekran z powodu zagniezdzen, to jest to niezly sygnalizator ze z kodem jest pewnie cos nie tak na bardziej ogolnym poziomie.

2793
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 19 Stycznia 2017, 20:26:13 »
No juz za pozno, zaczalem sie bawic zanim przeczytalem :)  nowy pull request wyslany, powinno sie polaczyc. Lokalnie kompiluje sie i dziala, chociaz czy cos sie nie zchrzanilo wyjdzie dopiero w praniu.

2794
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 19 Stycznia 2017, 18:45:17 »
train.cpp jest bardziej skomplikowany, tak pol na pol twoich poprawek, i moich. najlepiej odwolam update, polacze to na spokojnie lokalnie u siebie, i pchne jeszcze raz.

2795
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 19 Stycznia 2017, 18:42:20 »
No ja nie wiedzialem czy tam we flakach nie ma jakiegos przekazywania parametrow, wiec dla pewnosci dalem shared. Jak sie to wszystko wyprostuje to mozna poprawic, na razie nie szkodzi specjalnie, ze jest.

Komentarzy w wiekszosci nie tykalem, posklejalem tylko niektore linie
ktore
wygladaly
tak,
zeby to prosciej bylo ogarnac ;) polskie znaki moze w ogole wyrzucic z komentarzy? prawdopodobnie glupieje, bo u mnie jest angielski win 10, a pliki nie sa chyba zapisane w Unicode wiec to sie zmienia w te i we w te.

2796
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 19 Stycznia 2017, 18:27:27 »
Tak czy siak jak zaciągniesz zmiany to będzie trzeba poprawić, a w tym co zrobiłeś to chyba się lepiej orientujesz. Z pierwszego rzutu oka to nie wiem po co usuwasz inicjację zmiennych w hamulcach.
Inicjacja jest teraz wpisana bezposrednio w definicji zmiennych w naglowku, wiec to, co bylo w konstruktorze to tylko (wolniejszy) duplikat. Trudniej w ten sposob przeoczyc brak inicjalizacji.

Przegladam konflikty -- w driver.cpp mozesz dac moja wersje, to jest tylko minimalna kosmetyka przy komunikacie. Reszte podam jak sprawdze.
dynobj.cpp -- tak samo, mozesz dac moj kod. podejrzewam ze diff w wiekszosci glupieje bo w komentarzach sa pozostalosci po polskich znakach i on nie bardzo wie jak to lyknac.

2797
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 19 Stycznia 2017, 18:16:53 »
Ah ok, bo juz sie przestraszylem. Przy okazji pchnalem dotychczasowe poprawki, ale troche sie spoznilem, bedziesz musial porownac czy tam cos sie nie wcina :) (teoretycznie nie powinno, ale teoria sobie itp)

2798
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 19 Stycznia 2017, 17:12:31 »
Coś zepsułeś w hamulcach, gdyż po narzuceniu twoich zmian z pull-a znowu nie ma ciśnienia w cylindrach hamulcowych po starcie TD a powinno być. Mnie już naprawdę nie chce się tego szukać n-ty raz. Hamulce działają na wersji c3 i tak powinno zostać.
Masz na mysli to, co jest wlaczone do twojej wersji, czy to co dodalem u siebie ostatnio? Jesli to pierwsze to nie wiem czy to moja wina, bo akurat hamulcow w tej wersji patcha nie dotykalem :) (dodalem mu tam #pragma once i tyle) Natomiast w niektorych hamulcach bylo wtedy jeszcze pare niezainicjalizowanych zmiennych, wiec byc moze to jest przyczyna tego zachowania. To jest poprawione w uaktualnieniu ktore wrzucilem pozniej, tutaj na 99% inicjalizuje wszystkie zmienne tak, jak by to robil Borland, wiec powinno pomoc, a nie zaszkodzic (chociaz moze tez pomoc w uaktywnieniu bledow ktore sa gdzie indziej, a do tej pory byly maskowane przez brak inicjalizacji)

2799
Wydział zamówień / Odp: Fiat 126p na ulicach maszyny :)
« dnia: 19 Stycznia 2017, 00:03:23 »
Kiedyś stojąc w Psim Polu na boku policzyłem mu trójkąty. 72. :) Lowpoly tego mojego będzie nowe, nie ma co robić sobie jaj.
O przepraszam, w 2003 to bylo high quality, a nie low poly ;)

2800
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 18 Stycznia 2017, 19:49:37 »
Podlaczylem z powrotem otwieranie drzwi, choc na razie jest po chamsku zakodowane na sztywno dla skladow EZT
Docelowo powinien to byc zapewne wpic w .mmd albo coos, z tym ze w takiej sytuacji powinno to nastapic przed ladowanie glownego pudla, zeby kod byl w stanie podczepic prawidlowa wersje funkcji animujacej.

edit: znalazlem przyczyne znikajacych niektorych osi -- kod ladujacy pliki .fiz potrafil ustawic srednice na 0.0 (kiedy parameter nie byl podany) i przepuszczal to, bo mial zle ustawiony warunek brzegowy. W rezultacie przy kalkulacji obrotow bylo dzielenie przez 0. Teraz powinno byc dobrze, ale moze warto zmienic funkcje getkeyval() na cos w stylu bool getkeyval( _Type &Parameter, std::string const &Key) wtedy bedzie mogla automatycznie uaktualnic docelowa zmienna, a jak nie znajdzie wartosci to zwroci false. I przy okazji odpadnie koniecznosc recznego definiowania typow.

2801
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 18 Stycznia 2017, 08:04:54 »
Jesli brakuje .dll to najprawdopodobniej glew32.dll, ze strony glew ( http://glew.sourceforge.net/ )  poprzednio bylo to chyba laczone statycznie, i domyslnie brakuje jej w paczce z maszyna.

Wrzucilem na githuba male uaktualnienie -- glownie poprawiona wiekszosc memory leaks, przy okazji poczyscilem troche komponenty do hamulcow itp, wylazlo tam kilka wiecej nieinicjalizowanych zmiennych ;)  teraz beda chyba wszystkie, moze poprawi to troche niektore ze zgloszonych bledow, a moze nie.

2802
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 17 Stycznia 2017, 18:21:29 »
tmj, możesz też podrzucić solucję. Chcę mieć pewność, że czegoś nie zwaliłem podczas już lat pracy na dwóch środowiskach i 3 różnych wersjach VS. Jakąś zresztą będzie trzeba wrzucić na git-a.
Dolaczam ta, ktorej uzywam, chociaz pewnie trzeba bedzie poprawic sciezke (skonfigurowany jest zeby ciagnac dsound.lib z instalacji directX SDK)

Uporzadkowalem troche IncMainCtrl() dla latwiejszego czytania, i bylbym wdzieczny gdyby ktos rzucil okiem, czy tam jest wszystko w porzadku pod wzgledem logiki, bo ja sie na pociagach az tak nie znam :)  zwlaszcza sekcja ElectricSeriesMotors:

// basic fail conditions:
if( ( CabNo == 0 )
|| ( MainCtrlPosNo <= 0 ) ) {
// nie ma sterowania
return false;
}
if( ( TrainType == dt_ET22 ) && ( ScndCtrlPos != 0 ) ) {
// w ET22 nie da si&ecirc; kr&ecirc;ci&aelig; nastawnikiem przy w&sup3;&sup1;czonym boczniku
return false;
}
if( ( TrainType == dt_EZT ) && ( ActiveDir == 0 ) ) {
// w EZT nie da si&ecirc; za&sup3;&sup1;czy&aelig; pozycji bez ustawienia kierunku
return false;
}

bool OK = false;
    if (MainCtrlPos < MainCtrlPosNo)
    {
switch( EngineType ) {
case None:
case Dumb:
case DieselElectric:
case ElectricInductionMotor:
{
if( CtrlSpeed > 1 ) {
OK = ( IncMainCtrl( 1 )
&& IncMainCtrl( CtrlSpeed - 1 ) ); // a fail will propagate up the recursion chain. should this be || instead?
}
else {
++MainCtrlPos;
OK = true;
}
break;
}

case ElectricSeriesMotor:
{
if( ActiveDir == 0 ) { return false; }

if( CtrlSpeed > 1 ) {
// szybkie przejœcie na bezoporow&sup1;
if( TrainType == dt_ET40 ) {
break; // this means ET40 won't react at all to fast acceleration command. should it issue just IncMainCtrl(1) instead?
}
while( ( RList[ MainCtrlPos ].R > 0.0 )
&& IncMainCtrl( 1 ) ) {
// all work is done in the loop header
;
}
// OK:=true ; {takie chamskie, potem poprawie} <-Ra: kto mia&sup3; to
// poprawi&aelig; i po co?
if( ActiveDir == -1 ) {
while( ( RList[ MainCtrlPos ].Bn > 1 )
&& IncMainCtrl( 1 ) ) {
--MainCtrlPos;
}
}
OK = false; // shouldn't this be part of the loop above?
}
else { // CtrlSpeed == 1
++MainCtrlPos;
OK = true;
if( Imax == ImaxHi ) {
if( RList[ MainCtrlPos ].Bn > 1 ) {
if( true == MaxCurrentSwitch( false )) {
// wylaczanie wysokiego rozruchu
SetFlag( SoundFlag, sound_relay );
}
if( TrainType == dt_ET42 ) {
--MainCtrlPos;
OK = false;
}
}
}
if( ActiveDir == -1 ) {
if( ( TrainType != dt_PseudoDiesel )
&& ( RList[ MainCtrlPos ].Bn > 1 ) ) {
// blokada wejœcia na równoleg&sup3;&sup1; podczas jazdy do ty&sup3;u
--MainCtrlPos;
OK = false;
}
}
}

if( ( TrainType == dt_ET42 ) && ( true == DynamicBrakeFlag ) ) {
if( MainCtrlPos > 20 ) {
MainCtrlPos = 20;
OK = false;
}
}
// return OK;
break;
}

case DieselEngine:
{
if( CtrlSpeed > 1 ) {
while( MainCtrlPos < MainCtrlPosNo ) {
IncMainCtrl( 1 );
}
}
else {
++MainCtrlPos;
if( MainCtrlPos > 0 ) { CompressorAllow = true; }
else                  { CompressorAllow = false; }
}
OK = true;
break;
}

case WheelsDriven:
{
OK = AddPulseForce( CtrlSpeed );
break;
}
} // switch EngineType of
    }
    else {// MainCtrlPos>=MainCtrlPosNo
if( true == CoupledCtrl ) {
// wspólny wa&sup3; nastawnika jazdy i bocznikowania
if( ScndCtrlPos < ScndCtrlPosNo ) { // 3<3 -> false
++ScndCtrlPos;
OK = true;
}
else {
OK = false;
}
}
    }
konkretnie to kawalek if( ActiveDir == -1 ) bo tam jednoczesnie zwieksza ciag o 1 uzywajac wywolanie IncMainCtrl(1) i zaraz w tej samej petli zmniejsza o 1, co wydaje sie troche bez sensu..? Aha, i jeszcze to, ze blok dla CtrSpeed > 1 zawsze zwraca false. Nie powinno to byc ograniczone tylko to pod-bloku ActiveDir == -1, tak jak w pozostalych miejscach?

2803
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 17 Stycznia 2017, 01:37:20 »
Kontrola nastawnika jest, jeśli pojazd nie jest et22 lub jest et22 z bocznikiem na pozycji 0.
Czyli ujmujac to inaczej, jesli pociag to ET22 z bocznikiem na pozycji innej niz neutralna, to kontroli nie ma? Zmienilem zapis na
if( false == (( TrainType == dt_ET22 ) && ( ScndCtrlPos != 0 )) ) {
...
}
wychodzi na to samo, ale z malym rozumkiem troche latwiej to ogarnac :)

edit: a jak sie zastanowic, to mozna z tego wyrzucic negacje i po prostu od razu zwracac false, zamiast sie bawic w zagniezdzanie.

2804
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 16 Stycznia 2017, 23:03:38 »
Aha, cppcheck znalazl takie cos w mover.cpp
            if ((TrainType != dt_ET22) ||
                ((TrainType == dt_ET22) &&
                 (ScndCtrlPos ==
                  0))) // w ET22 nie da si&ecirc; kr&ecirc;ci&aelig; nastawnikiem przy w&sup3;&sup1;czonym boczniku

Redundant condition: TrainType==dt_ET22. 'TrainType!=dt_ET22 || (TrainType==dt_ET22 && ScndCtrlPos==0)' is equivalent to 'TrainType!=dt_ET22 || ScndCtrlPos==0'
czyli warunek bedzie spelniony zawsze, gdy ScndCTrlPos = 0 albo gdy pociag nie jest typu ET22. Sadzac po komentarzu to nie jest dokladnie to, co autor mial na mysli, ale nie wiem co dokladnie autor mial na mysli, wiec wolalem nie ruszac... ale to prawdopodobnie przyczyna dlaczego sterowanie nie jest calkiem takie, jak powinno byc.

2805
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 16 Stycznia 2017, 16:05:16 »
Aha, z zauwazalnych bledow -- cos jest na rzeczy z kolami/wozkami (moze innymi sub-modelami tez, nie przygladalem sie) W wagonach i samochodach przednie kola znikaja gdzies jak tylko pojazd zaczyna sie ruszac. W lokomotywach chyba jest w porzadku. Tak samo jest w tym skompilowanym .exe umieszczonym wczesniej w watku, czyli to nie moja wina ;)

2806
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 16 Stycznia 2017, 15:36:25 »
Czyli kwestia tego, że mamy bardzo dużo słów kluczowych definiujących elementy taboru. Wiem, naleciałość z czasów, kiedy jedynym dostępnym edytorem do MaSzyny był zwykły edytor tekstu. A próbował ktoś kompilatora GNU? Może to ograniczenie dotyczy tylko kompilatora ze stajni M$?
Inne kompilatory powinny sobie poradzic, standardowo limit to 256 tego typu blokow. Tak czy owak nie ma to juz znaczenia, rozbilem funkcje na pare blokow i chodzi, a w przyszlosci mozna to w ogole zautomatyzowac, np budujac w locie tabele elementow z otrzymanych typow/nazw, zamiast kodowania na sztywno.

@firleju merge zrobiony, podrzucilem pull request. Mozesz ciagnac kiedy ci pasuje :)

2807
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 16 Stycznia 2017, 14:44:30 »
No nie calkiem te same, pare poprawilem ;)
musze jeszcze zintegrowac z poprawkami ktore zrobiles w miedzyczasie, ale wersja tymczasowa jest tutaj: https://github.com/tmj-fstate/maszyna/tree/parser_replacement

a co do folderow w visual studio, kliknij prawym przyciskiem na projekcie albo folderze w okienku solution, i Add->New Filter. Mozesz wtedy wrzucac do nich pliki przez drag&drop.

2808
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 15 Stycznia 2017, 14:31:40 »
"I'm making a note here:
 Huge success!"


Az sie zdziwilem, bo szybciej sie to wszystko uruchomilo niz myslalem. Milion rzeczy tam jest jeszcze do poprawienia na 100 procent, ale w kazdym razie gra, jezdzi i buczy.


2809
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 15 Stycznia 2017, 05:50:11 »
Nawet nie probowalem uruchamiac, bo to nie ma prawa dzialac (ponad tysiac ostrzezen roznej masci) niemniej (maly) krok naprzod jest ;)

2810
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 14 Stycznia 2017, 19:31:41 »
Nie zrozumielismy sie :)

https://github.com/firleju/maszyna/blob/mover_in_c%2B%2B/Train.cpp

zerknij do InitializeCab()
(..)
            else if (str == AnsiString("mainctrlact:")) // zabek pozycji aktualnej
                ggMainCtrlAct.Load(Parser, DynamicObject->mdKabina);
            else if (str == AnsiString("scndctrl:")) // bocznik
                ggScndCtrl.Load(Parser, DynamicObject->mdKabina);
            else if (str == AnsiString("dirkey:")) // klucz kierunku
                ggDirKey.Load(Parser, DynamicObject->mdKabina);
(..)
i tak jeszcze ze 100 razy. Tego sie nie da za bardzo wprost przerobic na switch() bo switch musi miec stale wartosci (czyli int albo enum, tak jak mowisz) i nie lyka w takiej sytuacji wyszukiwania przypadku wg stringa. Tzn mozna by sie pewnie bawic z jakas tabela konwersji string->enum i zrobic switch() dla tych konwertowanych wartosci, ale to jest troche pisania bez gwarancji, ze i tak nie wyskoczy mu ten sam limit. To w takiej sytuacji wole to na razie zostawic, a przerobic mozna potem raz a porzadnie.

2811
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 14 Stycznia 2017, 17:07:49 »
Nie bardzo, bo sa oparte na porownywaniu stringow. Plus, calkiem mozliwe ze switch() ma podobne ograniczenie. Tymczasowo rozbije to na dwa osobne bloki, powinno wystarczyc, a w przyszlosci mozna sie pobawic przebudowaniem kodu kabiny na cos bardziej sensownego.

2812
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 14 Stycznia 2017, 07:16:55 »
Train.cpp jak na razie rozwalil konwersje -- okazuje sie, ze kompilator ma twardy limit 127 blokow else-if, a InitializeCab() nic sobie z tego nie robi. Trzeba sie bedzie przyjrzec, jak to przerobic na cos rozsadnego... 90% daloby sie ladnie zautomatyzowac, ale nie wiem jak to jest potem obslugiwane w symulacji. Tez wszystko recznie, jedna kontrolka po drugiej?

2813
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 13 Stycznia 2017, 17:45:01 »
Ładnie, proszę Cię, całość jest do refaktoringu. Ale po kolei. Ci którzy chcieli pisać wszystko na nowo kończyli smętnie.
Nie no bez przesady, ja nie planuje tutaj nic dotykac w samej strukturze. Probuje tylko doprowadzic do kompilacji w VC to, co jest. Na razie sprowadza sie to do parsera, stringow i usuniecia odwolan do pozostalych resztek po Borlandzie. Tylko mowie, ze zostalo tego troche wiecej niz mialem nadzieje, ze bedzie; ale trudno :)

2814
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 13 Stycznia 2017, 09:52:37 »
Przy okazji zerknąłem na kod pod kątem kompilacji w VS i jest tam jeszcze troszkę rzeczy do poprawienia
To jest delikatnie powiedziane :)  Zajrzalem tam sobie dzisiaj, i niestety na samym wycieciu parsera sie nie skonczy, sporo tam jeszcze sie paleta ansistringow, borlandowych naglowkow i innych takich. Ale jak juz zaczalem grzebac, to skoncze (chociaz ladnie jeszcze nie bedzie, na to przyjdzie czas pozniej)

2815
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 12 Stycznia 2017, 16:49:08 »
Jesli tam zostal tylko parser do zrobienia, to pchnij jak mozesz aktualna wersje na githuba. Na 100% nie moge obiecac, ale postaram sie zerknac w weekend czy da sie zrobic zamiane i doprowadzic to do kompilacji w czyms innym.

2816
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 11 Stycznia 2017, 15:22:39 »
Zainicjuj zmienną małą wartością, np, 2.3e-5. Potem dziel ją powoli przez jakieś 50, najlepiej tak żeby kompilator nie mógł sobie tego policzyć przed uruchomieniem programu i tak ze 100 razy. Powiedz jaki jest wynik w C#.
visual c++ 2013
double x = 2.3e-5;
for( int i = 0; i < 100; ++i ) {

x /= 50.0;
assert( x == x );
}
przy typie double x = 2.9155963805249270e-175
przy typie float x = 0

Borland to liczy, czy sie wysypuje?

jesli ComputeCollision() ma swoj udzial, to zwroc uwage na ten kawalek 1 - beta o ktorym wspomnialem (o ile to jeszcze tam jest) CouplerForce() wyglada jak spaghetti, ale nie ma tam nic strasznie podejrzanego, no chyba ze probuje gdzies czytac cos, co akurat nie jest danymi.

Chyba naprawde najlepiej byloby w tym momencie wywalic borlandowy parser, zeby to sie wszystki zaczelo kompilowac w jakims sensowniejszym srodowisku, i wtedy spokojnie szukac bledow

2817
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 11 Stycznia 2017, 13:28:49 »
C++ to przeżytek na miarę Internet Explorera! Nie wiem czy nie da się tego zrobić w C++ tak, żeby obliczenia i ich wyniki były jasne dla osoby, która rozumie samą matematykę w nich użytą. Jeśli tak, to będzie trzeba tak to przerobić. Jeśli nie, to chyba warto pomyśleć o języku, w którym 2+2 zawsze jest 4, a idiotyczne i niebezpieczne konwersje typów będą odrzucane przez kompilator.
Idiotyczne i niebezpieczne konwersje typow zawsze generuja ostrzezenia. Jak ktos chce, to moze sobie wlaczyc zasade, ze ostrzezenie = blad, i kompilacja nie pojdzie. Tyle, ze w kodzie maszyny ostrzezen jest pewnie tyle, ze usuwanie ich potrwaloby do przyszlej wiosny. Takich rzeczy trzeba pilnowac i usuwac je na biezaco, inaczej to sie szybko nawarstwia.

Czy c++ jest przezytkiem... troche mylisz tutaj dwie rzeczy -- maszyna jest w duzej mierze pisana pod Borland c++ ktory skonczyl rozwoj przed rokiem 2000. To jest faktycznie przezytek, ale tez ma on malo wspolnego z c++11 ( https://en.wikipedia.org/wiki/C%2B%2B11 ) i nowszymi wersjami jezyka. To troche tak jakby mowic ze openGL jest przezytkiem, bo opieramy sie na wersji 1.2 gdy tymczasem standard rozwinal sie do wersji 4.5 i posuwa sie dalej.

No, ale nic nie stoi na przeszkodzie, bys przepisal maszyne na C# jesli uwazasz ze to jedyna perspektywiczna droga rozwoju :)

@firleju podaj troche szczegolow jesli mozesz. Co to za funkcja, ktora liczy i chrzani te sprzegi?

2818
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 10 Stycznia 2017, 21:05:32 »
Co on tam tak liczy, ze mu sie w double albo long nie miesci? o.O

2819
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 10 Stycznia 2017, 19:47:47 »
Nie wiem, czy ma to zwiazek, ale zwroc uwage na ComputeCollision()
v1 = w1 * sqrt(1 - beta); // niejawna zmiana predkosci wskutek zderzenia
v2 = w2 * sqrt(1 - beta);
Nie ma tu zadnego zabezpieczenia przed sytuacja gdzie beta > 1 i nie zdziwilbym sie, gdyby wyszlo ze wywolanie z CollisionDetect() produkuje takie wlasnie wartosci od czasu do czasu, takie rzeczy jak Couplers[CouplerN].Connected->Couplers[Couplers[CouplerN].ConnectedNr].beta az prosza sie o klopot, i omylkowe czytanie danych z miejsc, gdzie zadnych danych nie ma :)

2820
Na warsztacie / Odp: Odp: Exe - konwersja na C++
« dnia: 10 Stycznia 2017, 07:46:38 »
NaN z reguly (moga byc roznice zaleznie od kompilatora, niektore to wylapia) wyskakuje przy dzieleniu zero przez zero, albo gdy probujesz liczyc sqrt() z liczby ujemnej. Bardziej prawdopodobny jest ten drugi wariant.

do wylapania gdzie to sie dzieje mozesz uzyc assert( foo == foo ); zatrzyma sie kiedy foo = NaN

Strony: 1 ... 92 93 [94] 95 96