vrecko
virtual reality framework
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
CarEnvirons.h
Go to the documentation of this file.
1 #ifndef CAR_ENVIRONS
2 #define CAR_ENVIRONS
3 
4 // tato makra popisuji vztah mezi pozici auta a pristi krizovatkou:
5 #define CAR_LEFT_JUNCTION 1
6 #define CAR_IN_JUNCTION 2
7 // auto je na kratke hrane mezi body OUT a IN
8 #define CAR_ON_SHORT_EDGE_BEFORE_JUNC 3
9 //#define CAR_FINAL_DESTINATION_REACHED 7
10 // auto je na normalni hrane za bodem stopOrGoDecision (mezi body OUT a IN
11 // a neni odstaveno mimo hranu)
12 #define CAR_BEHIND_STOP_OR_GO_DECISION 4
13 // to same, ale auto je odstaveno mimo hranu; (auto je docasne
14 // ze hrany odsunuto, kdyz stoji pred bodem stopBeforeJunc hrany prilis dlouho
15 // a nejspis tedy brani prujezdu ostatnich aut
16 #define CAR_BEHIND_STOP_OR_GO_DECISION_AND_PUT_ASIDE_TO_ROAD_MARGIN 5
17 // auto je na normalni hrane pred bodem stopOrGoDecision (mezi body OUT a IN)
18 #define CAR_IN_FRONT_OF_STOP_OR_GO_DECISION 6
19 // auto je pred cilem na konecne hrane
20 #define CAR_BEFORE_END 7
21 // Pozn.: kdyz je neco pred necim, znamena to, ze to je od toho smerem
22 // od bodu IN hrany k bodu OUT hrany; za je opacnym smerem
23 
24 // auto bude na pristi krizovatce zatacet doleva (viz nextJuncTurn)
25 #define NEXT_JUNC_TURN_LEFT 1
26 // to same doprava
27 #define NEXT_JUNC_TURN_RIGHT 2
28 
29 namespace CarSim {
30  struct CarEnvirons {
31  // popisuje vztah mezi pozici auta a pristi krizovatkou, hodnoty jsou
32  // popsany makry
33  unsigned int carNextJuncRel;
34 
35  // jestlize je auto za bodem stopOrGoDecision na normalni (nekoncove) hrane,
36  // nabyva hodnotu true, kdyz auto muze jet pristi velkou
37  // krizovatkou); v opacnem pripade je false
38  bool pass;
39 
40  // jestlize auto neni na krizovatce, je zde vzdalenost k pristimu
41  // vyznamnemu bodu v ceste auta (cil, bod IN nebo stopBeforeJunc):
42 
43  // I. jestlize je auto na normalni hrane mezi body Out a In,
44  // je zde vzdalenost k bodu stopBeforeJunc (v nekterych pripadech
45  // musi auto zacit brzdit jeste pred bodem stopOrGoDecision,
46  // aby melo v bode stopBeforeJunc 0-ovou rychlost (aby zastavilo));
47  // to, ze je auto uz za bodem stopBeforeJunc, je vyjadreno znaminkem - pred
48  // touto vzdalenosti
49  // II. jestlize je auto na konecne hrane, je zde vzdalenost k cily
50  // (jestlize auto prejelo cil, vzdalenost je zaporna);
51  // III. jestlize je auto na kratke hrane, je zde vzdalenost k bodu IN;
52  // (jinak obsahuje -1)
54  // jestlize auto prave vstoupilo do krizovatky, je uvedeno zatoceni kol tak,
55  // aby vozidlo plynule projelo krizovatkou a vjelo do spravne odbocky -
56  // - do vystupni hrany na krizovatce
58  // jestlize auto opousti malou krizovatku u bodu Out, je
59  // zde doporucena rychlost auta na pristi krizovatce
61  // hrana, na ktere se v aktualnim snimku nachazi auto
62  unsigned int carEdgeId;
63  // jestlize je auto na normalni hrane mezi body OUT a IN,
64  // je zde vzdalenost k nasledujicimu autu na hrane; jestlize auto neni
65  // na normalni hrane nebo zadne nasledujici auto neni, obsahuje
66  // nejvetsi zaporne cislo typu float (pri nizkem fps se muze stat, ze
67  // je tato vzdalenost zaporna - auto nabouralo nasledujici auto)
68  float nextCarDist;
69  // rychlost dalsiho auta (jestlize zadne nebude, bude 0)
70  float nextCarVel;
71  // rika, zda auto bude na pristi krizovatce zatacet doleva (NEXT_JUNC_TURN_LEFT,
72  // uhel angleInXZ mezi vstupni a vystupni hranou na pristi krizovatce
73  // je v intervalu (6/5 PI, 2*PI)),
74  // zatacet doprava (NEXT_JUNC_TURN_RIGHT, uhel angleInXZ je v intervalu (0,4/5 PI)
75  // nebo pojede rovne (0, uhel v intervalu [4/5 PI, 6/5 PI]);
76  // uhel mezi vstupni a vystupni hranou v jedne silnici neni 0, ale 2*PI-0.001 -
77  // viz angleInXZ v InOutEdgeAttr v Junction.h);
78  // nastavi se, kdyz auto vyjizdi ze krizovatky
79  unsigned int nextJuncTurn;
80  };
81 }
82 
83 #endif
84 
85