INET Framework for OMNeT++/OMNEST
inet::visualizer::TracingObstacleLossCanvasVisualizer Class Reference

#include <TracingObstacleLossCanvasVisualizer.h>

Inheritance diagram for inet::visualizer::TracingObstacleLossCanvasVisualizer:
inet::visualizer::TracingObstacleLossVisualizerBase inet::visualizer::VisualizerBase

Classes

class  ObstacleLossCanvasVisualization
 

Protected Attributes

Parameters
double zIndex = NaN
 
- Protected Attributes inherited from inet::visualizer::TracingObstacleLossVisualizerBase
bool displayIntersections = false
 
cFigure::Color intersectionLineColor
 
cFigure::LineStyle intersectionLineStyle
 
double intersectionLineWidth = NaN
 
bool displayFaceNormalVectors = false
 
cFigure::Color faceNormalLineColor
 
cFigure::LineStyle faceNormalLineStyle
 
double faceNormalLineWidth = NaN
 
const char * fadeOutMode = nullptr
 
double fadeOutTime = NaN
 
double fadeOutAnimationSpeed = NaN
 
std::vector< const ObstacleLossVisualization * > obstacleLossVisualizations
 
- Protected Attributes inherited from inet::visualizer::VisualizerBase
cModule * visualizationTargetModule = nullptr
 
cModule * visualizationSubjectModule = nullptr
 
const char * tags = nullptr
 

Graphics

const CanvasProjectioncanvasProjection = nullptr
 The 2D projection used on the canvas. More...
 
cGroupFigure * obstacleLossLayer = nullptr
 The layer figure that contains the figures representing the obstacle losses. More...
 
virtual void initialize (int stage) override
 
virtual void refreshDisplay () const override
 
virtual const ObstacleLossVisualizationcreateObstacleLossVisualization (const physicallayer::ITracingObstacleLoss::ObstaclePenetratedEvent *obstaclePenetratedEvent) const override
 
virtual void addObstacleLossVisualization (const ObstacleLossVisualization *obstacleLossVisualization) override
 
virtual void removeObstacleLossVisualization (const ObstacleLossVisualization *obstacleLossVisualization) override
 
virtual void setAlpha (const ObstacleLossVisualization *obstacleLossVisualization, double alpha) const override
 

Additional Inherited Members

- Public Member Functions inherited from inet::visualizer::TracingObstacleLossVisualizerBase
virtual void receiveSignal (cComponent *source, simsignal_t signal, cObject *object, cObject *details) override
 
- Protected Member Functions inherited from inet::visualizer::TracingObstacleLossVisualizerBase
virtual void preDelete (cComponent *root) override
 
virtual void subscribe ()
 
virtual void unsubscribe ()
 
virtual void removeAllObstacleLossVisualizations ()
 
- Protected Member Functions inherited from inet::visualizer::VisualizerBase
virtual int numInitStages () const override
 
virtual Coord getPosition (const cModule *networkNode) const
 
virtual Coord getContactPosition (const cModule *networkNode, const Coord &fromPosition, const char *contactMode, double contactSpacing) const
 
virtual Quaternion getOrientation (const cModule *networkNode) const
 
virtual void mapChunks (const Ptr< const Chunk > &chunk, const std::function< void(const Ptr< const Chunk > &, int)> &thunk) const
 

Member Function Documentation

◆ addObstacleLossVisualization()

void inet::visualizer::TracingObstacleLossCanvasVisualizer::addObstacleLossVisualization ( const ObstacleLossVisualization obstacleLossVisualization)
overrideprotectedvirtual

Reimplemented from inet::visualizer::TracingObstacleLossVisualizerBase.

112 {
114  auto obstacleLossCanvasVisualization = static_cast<const ObstacleLossCanvasVisualization *>(obstacleLossVisualization);
116  obstacleLossLayer->addFigure(obstacleLossCanvasVisualization->intersectionFigure);
118  obstacleLossLayer->addFigure(obstacleLossCanvasVisualization->faceNormalFigure1);
119  obstacleLossLayer->addFigure(obstacleLossCanvasVisualization->faceNormalFigure2);
120  }
121 }

◆ createObstacleLossVisualization()

const TracingObstacleLossVisualizerBase::ObstacleLossVisualization * inet::visualizer::TracingObstacleLossCanvasVisualizer::createObstacleLossVisualization ( const physicallayer::ITracingObstacleLoss::ObstaclePenetratedEvent obstaclePenetratedEvent) const
overrideprotectedvirtual

Implements inet::visualizer::TracingObstacleLossVisualizerBase.

55 {
56  auto object = obstaclePenetratedEvent->object;
57  auto intersection1 = obstaclePenetratedEvent->intersection1;
58  auto intersection2 = obstaclePenetratedEvent->intersection2;
59  auto normal1 = obstaclePenetratedEvent->normal1;
60  auto normal2 = obstaclePenetratedEvent->normal2;
61  auto loss = obstaclePenetratedEvent->loss;
62  const RotationMatrix rotation(object->getOrientation().toEulerAngles());
63  const Coord& position = object->getPosition();
64  const Coord rotatedIntersection1 = rotation.rotateVector(intersection1);
65  const Coord rotatedIntersection2 = rotation.rotateVector(intersection2);
66  double intersectionDistance = intersection2.distance(intersection1);
67  LabeledLineFigure *intersectionLine = nullptr;
69  intersectionLine = new LabeledLineFigure("intersection");
70  intersectionLine->setTags((std::string("obstacle_loss ") + tags).c_str());
71  intersectionLine->setTooltip("This line represents the intersection of a propagating signal and an obstructing physical object.");
72  intersectionLine->setStart(canvasProjection->computeCanvasPoint(rotatedIntersection1 + position));
73  intersectionLine->setEnd(canvasProjection->computeCanvasPoint(rotatedIntersection2 + position));
74  auto lineFigure = intersectionLine->getLineFigure();
75  lineFigure->setLineColor(intersectionLineColor);
76  lineFigure->setLineStyle(intersectionLineStyle);
77  lineFigure->setLineWidth(intersectionLineWidth);
78  lineFigure->setZoomLineWidth(false);
79  auto labelFigure = intersectionLine->getLabelFigure();
80  char tmp[32];
81  sprintf(tmp, "%.4g dB", inet::math::fraction2dB(loss));
82  labelFigure->setText(tmp);
83  }
84  cLineFigure *faceNormal1Line = nullptr;
85  cLineFigure *faceNormal2Line = nullptr;
87  Coord normalVisualization1 = normal1 / normal1.length() * intersectionDistance / 10;
88  Coord normalVisualization2 = normal2 / normal2.length() * intersectionDistance / 10;
89  faceNormal1Line = new cLineFigure("normal1");
90  faceNormal1Line->setTags((std::string("obstacle_loss face_normal_vector ") + tags).c_str());
91  faceNormal1Line->setTooltip("This line represents the face normal vector at the intersection of a propagating signal and an obstructing physical object.");
92  faceNormal1Line->setStart(canvasProjection->computeCanvasPoint(rotatedIntersection1 + position));
93  faceNormal1Line->setEnd(canvasProjection->computeCanvasPoint(rotatedIntersection1 + position + rotation.rotateVector(normalVisualization1)));
94  faceNormal1Line->setLineColor(faceNormalLineColor);
95  faceNormal1Line->setLineStyle(faceNormalLineStyle);
96  faceNormal1Line->setLineWidth(faceNormalLineWidth);
97  faceNormal1Line->setZoomLineWidth(false);
98  faceNormal2Line = new cLineFigure("normal2");
99  faceNormal2Line->setTags((std::string("obstacle_loss face_normal_vector ") + tags).c_str());
100  faceNormal2Line->setTooltip("This line represents the face normal vector at the intersection of a propagating signal and an obstructing physical object.");
101  faceNormal2Line->setStart(canvasProjection->computeCanvasPoint(rotatedIntersection2 + position));
102  faceNormal2Line->setEnd(canvasProjection->computeCanvasPoint(rotatedIntersection2 + position + rotation.rotateVector(normalVisualization2)));
103  faceNormal2Line->setLineColor(faceNormalLineColor);
104  faceNormal2Line->setLineStyle(faceNormalLineStyle);
105  faceNormal2Line->setLineWidth(faceNormalLineWidth);
106  faceNormal2Line->setZoomLineWidth(false);
107  }
108  return new ObstacleLossCanvasVisualization(intersectionLine, faceNormal1Line, faceNormal2Line);
109 }

◆ initialize()

void inet::visualizer::TracingObstacleLossCanvasVisualizer::initialize ( int  stage)
overrideprotectedvirtual

Reimplemented from inet::visualizer::TracingObstacleLossVisualizerBase.

35 {
37  if (!hasGUI()) return;
38  if (stage == INITSTAGE_LOCAL) {
39  zIndex = par("zIndex");
40  cCanvas *canvas = visualizationTargetModule->getCanvas();
42  obstacleLossLayer = new cGroupFigure("obstacle_loss");
43  obstacleLossLayer->setZIndex(zIndex);
44  obstacleLossLayer->insertBefore(canvas->getSubmodulesLayer());
45  }
46 }

◆ refreshDisplay()

void inet::visualizer::TracingObstacleLossCanvasVisualizer::refreshDisplay ( ) const
overrideprotectedvirtual

◆ removeObstacleLossVisualization()

void inet::visualizer::TracingObstacleLossCanvasVisualizer::removeObstacleLossVisualization ( const ObstacleLossVisualization obstacleLossVisualization)
overrideprotectedvirtual

Reimplemented from inet::visualizer::TracingObstacleLossVisualizerBase.

124 {
126  auto obstacleLossCanvasVisualization = static_cast<const ObstacleLossCanvasVisualization *>(obstacleLossVisualization);
128  obstacleLossLayer->removeFigure(obstacleLossCanvasVisualization->intersectionFigure);
130  obstacleLossLayer->removeFigure(obstacleLossCanvasVisualization->faceNormalFigure1);
131  obstacleLossLayer->removeFigure(obstacleLossCanvasVisualization->faceNormalFigure2);
132  }
133 }

◆ setAlpha()

void inet::visualizer::TracingObstacleLossCanvasVisualizer::setAlpha ( const ObstacleLossVisualization obstacleLossVisualization,
double  alpha 
) const
overrideprotectedvirtual

Implements inet::visualizer::TracingObstacleLossVisualizerBase.

136 {
137  auto obstacleLossCanvasVisualization = static_cast<const ObstacleLossCanvasVisualization *>(obstacleLossVisualization);
139  obstacleLossCanvasVisualization->intersectionFigure->getLineFigure()->setLineOpacity(alpha);
141  obstacleLossCanvasVisualization->faceNormalFigure1->setLineOpacity(alpha);
142  obstacleLossCanvasVisualization->faceNormalFigure2->setLineOpacity(alpha);
143  }
144 }

Member Data Documentation

◆ canvasProjection

const CanvasProjection* inet::visualizer::TracingObstacleLossCanvasVisualizer::canvasProjection = nullptr
protected

The 2D projection used on the canvas.

Referenced by createObstacleLossVisualization(), and initialize().

◆ obstacleLossLayer

cGroupFigure* inet::visualizer::TracingObstacleLossCanvasVisualizer::obstacleLossLayer = nullptr
protected

The layer figure that contains the figures representing the obstacle losses.

Referenced by addObstacleLossVisualization(), initialize(), and removeObstacleLossVisualization().

◆ zIndex

double inet::visualizer::TracingObstacleLossCanvasVisualizer::zIndex = NaN
protected

Referenced by initialize().


The documentation for this class was generated from the following files:
inet::visualizer::TracingObstacleLossVisualizerBase::fadeOutAnimationSpeed
double fadeOutAnimationSpeed
Definition: TracingObstacleLossVisualizerBase.h:44
inet::CanvasProjection::getCanvasProjection
static CanvasProjection * getCanvasProjection(const cCanvas *canvas)
Definition: CanvasProjection.cc:53
inet::visualizer::TracingObstacleLossVisualizerBase::displayIntersections
bool displayIntersections
Definition: TracingObstacleLossVisualizerBase.h:34
inet::visualizer::TracingObstacleLossVisualizerBase::faceNormalLineStyle
cFigure::LineStyle faceNormalLineStyle
Definition: TracingObstacleLossVisualizerBase.h:40
inet::visualizer::TracingObstacleLossVisualizerBase::removeObstacleLossVisualization
virtual void removeObstacleLossVisualization(const ObstacleLossVisualization *obstacleLossVisualization)
Definition: TracingObstacleLossVisualizerBase.cc:108
inet::visualizer::TracingObstacleLossVisualizerBase::addObstacleLossVisualization
virtual void addObstacleLossVisualization(const ObstacleLossVisualization *obstacleLossVisualization)
Definition: TracingObstacleLossVisualizerBase.cc:103
inet::visualizer::TracingObstacleLossVisualizerBase::initialize
virtual void initialize(int stage) override
Definition: TracingObstacleLossVisualizerBase.cc:29
inet::visualizer::TracingObstacleLossVisualizerBase::refreshDisplay
virtual void refreshDisplay() const override
Definition: TracingObstacleLossVisualizerBase.cc:50
inet::visualizer::VisualizerBase::visualizationTargetModule
cModule * visualizationTargetModule
Definition: VisualizerBase.h:25
inet::math::fraction2dB
double fraction2dB(double fraction)
Convert a fraction value to dB.
Definition: INETMath.h:158
inet::visualizer::TracingObstacleLossVisualizerBase::intersectionLineColor
cFigure::Color intersectionLineColor
Definition: TracingObstacleLossVisualizerBase.h:35
inet::visualizer::TracingObstacleLossCanvasVisualizer::canvasProjection
const CanvasProjection * canvasProjection
The 2D projection used on the canvas.
Definition: TracingObstacleLossCanvasVisualizer.h:44
inet::visualizer::TracingObstacleLossVisualizerBase::faceNormalLineColor
cFigure::Color faceNormalLineColor
Definition: TracingObstacleLossVisualizerBase.h:39
inet::CanvasProjection::computeCanvasPoint
cFigure::Point computeCanvasPoint(const Coord &point) const
Definition: CanvasProjection.cc:34
inet::visualizer::TracingObstacleLossCanvasVisualizer::obstacleLossLayer
cGroupFigure * obstacleLossLayer
The layer figure that contains the figures representing the obstacle losses.
Definition: TracingObstacleLossCanvasVisualizer.h:48
inet::INITSTAGE_LOCAL
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
inet::visualizer::TracingObstacleLossVisualizerBase::displayFaceNormalVectors
bool displayFaceNormalVectors
Definition: TracingObstacleLossVisualizerBase.h:38
inet::visualizer::TracingObstacleLossVisualizerBase::obstacleLossVisualizations
std::vector< const ObstacleLossVisualization * > obstacleLossVisualizations
Definition: TracingObstacleLossVisualizerBase.h:47
inet::visualizer::TracingObstacleLossCanvasVisualizer::zIndex
double zIndex
Definition: TracingObstacleLossCanvasVisualizer.h:36
inet::visualizer::TracingObstacleLossVisualizerBase::faceNormalLineWidth
double faceNormalLineWidth
Definition: TracingObstacleLossVisualizerBase.h:41
inet::units::constants::alpha
const value< double, units::unit > alpha(7.2973525376e-3)
inet::visualizer::VisualizerBase::tags
const char * tags
Definition: VisualizerBase.h:27
inet::visualizer::TracingObstacleLossVisualizerBase::intersectionLineStyle
cFigure::LineStyle intersectionLineStyle
Definition: TracingObstacleLossVisualizerBase.h:36
inet::visualizer::TracingObstacleLossVisualizerBase::intersectionLineWidth
double intersectionLineWidth
Definition: TracingObstacleLossVisualizerBase.h:37