1 package org.opentrafficsim.animation.data;
2
3 import java.util.List;
4
5 import org.djunits.value.vdouble.scalar.Length;
6 import org.djutils.draw.line.PolyLine2d;
7 import org.opentrafficsim.base.StripeElement;
8 import org.opentrafficsim.base.StripeElement.StripeLateralSync;
9 import org.opentrafficsim.base.geometry.DirectionalPolyLine;
10 import org.opentrafficsim.base.geometry.OtsShape;
11 import org.opentrafficsim.draw.road.StripeAnimation.StripeData;
12 import org.opentrafficsim.road.network.lane.Stripe;
13
14
15
16
17
18
19
20
21
22 public class AnimationStripeData extends AnimationCrossSectionElementData<Stripe> implements StripeData
23 {
24
25
26 private DirectionalPolyLine directionalCenterLine = null;
27
28
29
30
31
32 public AnimationStripeData(final Stripe stripe)
33 {
34 super(stripe);
35 }
36
37 @Override
38 public DirectionalPolyLine getCenterLine()
39 {
40 if (this.directionalCenterLine == null)
41 {
42 this.directionalCenterLine = new DirectionalPolyLine(getObject().getCenterLine(),
43 getObject().getLink().getStartNode().getHeading(), getObject().getLink().getEndNode().getHeading());
44 }
45 return this.directionalCenterLine;
46 }
47
48 @Override
49 public PolyLine2d getReferenceLine()
50 {
51 return getObject().getLateralSync().equals(StripeLateralSync.NONE) ? getObject().getCenterLine()
52 : getObject().getLinkReferenceLine();
53 }
54
55 @Override
56 public PolyLine2d getLine()
57 {
58 return OtsShape.transformLine(getObject().getCenterLine(), getLocation());
59 }
60
61 @Override
62 public List<StripeElement> getElements()
63 {
64 return getObject().getElements();
65 }
66
67 @Override
68 public Length getDashOffset()
69 {
70 return getObject().getDashOffset();
71 }
72
73 @Override
74 public Length getWidth(final Length location)
75 {
76 return getObject().getWidth(location);
77 }
78
79 @Override
80 public String toString()
81 {
82 return "Stripe " + getObject().getLink().getId() + " " + getObject().getOffsetAtBegin();
83 }
84
85 }