Vehicle
# position: float
# curVelocity: float
# maxVelocity: float
# brakeProb: float
# id: int
# test: int
# trackLength: float
+ timeElapse(): void
+ getPosition(): float
+ getCurVelocity(): float
+ getMaxVelocity(): float
+ updateVelocity(distanceForerunner: float): void
+ timeElapse(): void
+ Vehicle(id: id, position: int, maxVelocity: float, brakeProb: float, trackLength: float)
Track
# trackLength: float
# sumAvgMemory: float
# sumDelAvgMemory: float
# historyLength: int
# overallAvg: float
# delayedAvg: float
# lastAvg: float
# waitTime: int
# maxVelocity: float
# brakeProb: float
# steps: long
# listSemaphore: Semaphore
- Track(int, float, float, float, int, int)
+ getVtrList(): List<List<TimeVehicleRecord>>
+ getOverallAvg(): float
+ getLastAvg(): float
+ getDelayedAvg(): float
+ getTrackLength(): float
+ getSteps(): long
+ getListSemaphore(): Semaphore
+ getHistoryLength(): int
# createVehiclesList(int): List<Vehicle>
+ setWaitTime(int): void
+ setBrakeProb(float): void
+ setMaxVelocity(float): void
+ timeElapse(): void
+ avg_step(int): float
# update_avg(): void
VehicleTimeRecord
# id: int
# position: float
# velocity: float
# maxVelocity: float
+ getMaxVelocity(): float
+ getPosition(): float
+ getVelocity(): float
+ VehicleTimeRecord(id: int, position: int, velocity: float, maxVelocity: float)
TimeRecordView
# onSizeChanged(w: int, h: int, oldw: int, oldh: int): void
+ TimeRecordView(context: context, track: Track)
SurfaceView
MainActivity
+static defaultNoOfVehicles: int = 25 {readOnly}
+ static defaultTrackLength: int = 100 {readOnly}
+ static defaultBrakeProb: float = 0.3f {readOnly}
+ static defaultMaxVelocity: float = 5.0f {readOnly}
+ static defaultDelay: int = 0 {readOnly}
+ static defaultHistoryLength: int = 50 {readOnly}
+ static defaultFrameskip: int = 0 {readOnly}
# LinearLayout viewStack: LinearLayout
# onCreate(savedInstanceState:Bundle): void
+ static round(float number, int digits): float
# stopWorker(): void
# updateTrack(): void
+ onProgressChanged(seekBar: SeekBar, progress: int, fromUser; boolean): void
+ onStartTrackingTouch(seekBar: SeekBar): void
+ onStopTrackingTouch(seekBar: SeekBar): void
+ onStepButtonClick(view: View): void
+ onPlayButtonClick(view: View): void
+ onStopButtonClick(view: View): void
+ onClearButtonClick(view: View): void
Worker
# frameskip: int
# stop: boolean
# gui: MainActivity
# Renderer renderer
# int frameskip;
+ run(): void
+ setStop(stop: boolean): void
+ setFrameskip(frames): int: void
+ Worker(track: track, gui: MainActivity, renderer: Renderer, frameskip: int)
Thread
Renderer
# pixelPerVehicle: int
# pixelPerLine: int
# float tooShortPerTrackLength: float
# float tooShortPerHeight: float
# Paint paint: Paint
# holder: SurfaceHolder
- canvas: Canvas
# width: int
# height: int
+ setSize(width: int, height: int): void
+ setTrack(track: Track): void
# getColor(curVelocity: float, maxVelocity: float): int
# draw(): void
+ Renderer(track: Track, holder: SurfaceHolder)
<<interface>>
SeekBar.OnSeekBarChangeListener
~ onProgressChanged(SeekBar var1, int var2, boolean var3): void
~ onStartTrackingTouch(SeekBar var1): void
~ onStopTrackingTouch(SeekBar var1): void
AppCompatActivity
SurfaceHolder