1 package org.opentrafficsim.demo.conflict;
2
3 import java.awt.Dimension;
4 import java.net.URL;
5 import java.rmi.RemoteException;
6
7 import javax.naming.NamingException;
8
9 import org.djunits.value.vdouble.scalar.Duration;
10 import org.djunits.value.vdouble.scalar.Time;
11 import org.djutils.io.URLResource;
12 import org.opentrafficsim.core.dsol.AbstractOtsModel;
13 import org.opentrafficsim.core.dsol.OtsAnimator;
14 import org.opentrafficsim.core.dsol.OtsSimulatorInterface;
15 import org.opentrafficsim.core.gtu.Gtu;
16 import org.opentrafficsim.core.perception.HistoryManagerDevs;
17 import org.opentrafficsim.demo.DefaultsFactory;
18 import org.opentrafficsim.demo.conflict.TJunctionDemo.TJunctionModel;
19 import org.opentrafficsim.road.network.RoadNetwork;
20 import org.opentrafficsim.road.network.factory.xml.parser.XmlParser;
21 import org.opentrafficsim.swing.gui.OtsAnimationPanel;
22 import org.opentrafficsim.swing.gui.OtsSimulationApplication;
23
24 import nl.tudelft.simulation.dsol.SimRuntimeException;
25 import nl.tudelft.simulation.language.DsolException;
26
27
28
29
30
31
32
33
34
35
36 public class TJunctionDemo extends OtsSimulationApplication<TJunctionModel>
37 {
38
39 private static final long serialVersionUID = 20161211L;
40
41
42
43
44
45
46
47 public TJunctionDemo(final String title, final OtsAnimationPanel panel, final TJunctionModel model)
48 {
49 super(model, panel, DefaultsFactory.GTU_TYPE_MARKERS.toMap());
50 }
51
52
53
54
55
56 public static void main(final String[] args)
57 {
58 demo(true);
59 }
60
61
62
63
64
65 public static void demo(final boolean exitOnClose)
66 {
67 Gtu.ALIGNED = false;
68 try
69 {
70 OtsAnimator simulator = new OtsAnimator("TJunctionDemo");
71 final TJunctionModel junctionModel = new TJunctionModel(simulator);
72 simulator.initialize(Time.ZERO, Duration.ZERO, Duration.instantiateSI(3600.0), junctionModel,
73 HistoryManagerDevs.noHistory(simulator));
74 OtsAnimationPanel animationPanel = new OtsAnimationPanel(junctionModel.getNetwork().getExtent(),
75 new Dimension(800, 600), simulator, junctionModel, DEFAULT_GTU_COLORERS, junctionModel.getNetwork());
76 TJunctionDemo app = new TJunctionDemo("T-Junction demo", animationPanel, junctionModel);
77 app.setExitOnClose(exitOnClose);
78 animationPanel.enableSimulationControlButtons();
79 }
80 catch (SimRuntimeException | NamingException | RemoteException | DsolException exception)
81 {
82 exception.printStackTrace();
83 }
84 }
85
86
87
88
89 public static class TJunctionModel extends AbstractOtsModel
90 {
91
92 private static final long serialVersionUID = 20161211L;
93
94
95 private RoadNetwork network;
96
97
98
99
100 public TJunctionModel(final OtsSimulatorInterface simulator)
101 {
102 super(simulator);
103 }
104
105 @Override
106 public void constructModel() throws SimRuntimeException
107 {
108 try
109 {
110 URL xmlURL = URLResource.getResource("/resources/conflict/TJunction.xml");
111 this.network = new RoadNetwork("TJunction", getSimulator());
112 new XmlParser(this.network).setUrl(xmlURL).setScenario("1").build();
113 }
114 catch (Exception exception)
115 {
116 exception.printStackTrace();
117 }
118 }
119
120 @Override
121 public RoadNetwork getNetwork()
122 {
123 return this.network;
124 }
125
126 }
127 }