| | |
| | | |
| | | return index; |
| | | } |
| | | |
| | | static void ThroughZebraCrossing(struct road_exam2_map &map, const car_model *car) |
| | | { |
| | | for (int i = 0; i < map.specialAreas.size(); i++) { |
| | | if (map.specialAreas[i].character == 'zebra') { |
| | | double distance = 0.0; |
| | | |
| | | double yaw = YawOf(car->carXY[ car->axial[AXIAL_FRONT] ], car->carXY[ car->axial[AXIAL_REAR] ]); |
| | | PointF extPoint = PointExtend(car->carXY[ car->axial[AXIAL_FRONT] ], LASTEST_BREAK_POINT, yaw); |
| | | Line extLine; |
| | | MakeLine(&extLine, &car->carXY[ car->axial[AXIAL_FRONT] ], &extPoint); |
| | | |
| | | if (IntersectionOf(extLine, map.specialAreas[i].startLine) == GM_Intersection && |
| | | IntersectionOfLine(car->carXY[ car->axial[AXIAL_FRONT] ], map.specialAreas[i].startLine) == 1 ) { |
| | | jj = true; |
| | | if (ReadCarStatus(BREAK) == BREAK_ACTIVE) { |
| | | breakActive = 1; |
| | | } |
| | | } else { |
| | | jj = false; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | if (distance < LASTEST_BREAK_POINT) { |
| | | if (ReadCarStatus(BREAK) == BREAK_ACTIVE) { |
| | | breakActive = 1; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |