Eclipse SUMO - Simulation of Urban MObility
|
move element More...
#include <GNEMoveElement.h>
Public Member Functions | |
virtual GNEMoveOperation * | getMoveOperation ()=0 |
get move operation More... | |
GNEMoveElement () | |
constructor More... | |
virtual void | removeGeometryPoint (const Position clickedPosition, GNEUndoList *undoList)=0 |
remove geometry point in the clicked position More... | |
virtual | ~GNEMoveElement () |
Static Public Member Functions | |
static void | commitMove (const GNEViewNet *viewNet, GNEMoveOperation *moveOperation, const GNEMoveOffset &offset, GNEUndoList *undoList) |
commit move element for the given offset More... | |
static void | moveElement (const GNEViewNet *viewNet, GNEMoveOperation *moveOperation, const GNEMoveOffset &offset) |
move element the for given offset (note: offset can be X-Y-0, 0-0-Z or X-Y-Z) More... | |
Protected Member Functions | |
GNEMoveOperation * | calculateMoveShapeOperation (const GUIGlObject *obj, const PositionVector originalShape, const bool maintainShapeClosed) |
calculate move shape operation More... | |
Protected Attributes | |
double | myMoveElementLateralOffset |
move element lateral offset (used by elements placed over lanes More... | |
Private Member Functions | |
virtual void | commitMoveShape (const GNEMoveResult &moveResult, GNEUndoList *undoList)=0 |
commit move shape More... | |
GNEMoveElement (const GNEMoveElement &)=delete | |
Invalidated copy constructor. More... | |
GNEMoveElement & | operator= (const GNEMoveElement &)=delete |
Invalidated assignment operator. More... | |
virtual void | setMoveShape (const GNEMoveResult &moveResult)=0 |
set move shape More... | |
Static Private Member Functions | |
static void | adjustBothPositions (const GNEViewNet *viewNet, const GNEMoveOperation *moveOperation, GNEMoveResult &moveResult, const GNEMoveOffset &offset) |
static PositionVector | calculateExtrapolatedVector (const GNEMoveOperation *moveOperation, const GNEMoveResult &moveResult) |
calculate width/height shape More... | |
static double | calculateLaneOffset (const GNEViewNet *viewNet, const GNELane *lane, const double firstPosition, const double secondPosition, const GNEMoveOffset &offset, const double extremFrom, const double extremTo) |
calculate lane offset More... | |
static void | calculateMoveResult (GNEMoveResult &moveResult, const GNEViewNet *viewNet, const GNELane *firstLane, const double firstPos, const GNELane *secondLane, const double secondPos, const GNEMoveOffset &offset) |
calculate double movement over two lanes More... | |
static void | calculateMoveResult (GNEMoveResult &moveResult, const GNEViewNet *viewNet, const GNELane *lane, const double firstPos, const double secondPos, const GNEMoveOffset &offset) |
calculate double movement over one lane More... | |
static void | calculateMoveResult (GNEMoveResult &moveResult, const GNEViewNet *viewNet, const GNELane *lane, const double pos, const GNEMoveOffset &offset, const double extremFrom, const double extremTo) |
calculate single movement over one lane More... | |
static void | calculateNewLane (const GNEViewNet *viewNet, const GNELane *originalLane, const GNELane *&newLane, double &laneOffset) |
calculate new lane More... | |
move element
Definition at line 226 of file GNEMoveElement.h.
GNEMoveElement::GNEMoveElement | ( | ) |
constructor
Definition at line 186 of file GNEMoveElement.cpp.
|
inlinevirtual |
Definition at line 233 of file GNEMoveElement.h.
|
privatedelete |
Invalidated copy constructor.
|
staticprivate |
Definition at line 542 of file GNEMoveElement.cpp.
References calculateMoveResult(), GNEMoveOperation::firstLane, GNEMoveOperation::firstPosition, GNELane::getLaneShapeLength(), GNEMoveResult::newFirstPos, GNEMoveResult::newSecondPos, GNEMoveOperation::operationType, GNEMoveOperation::secondLane, GNEMoveOperation::secondPosition, GNEMoveOperation::TWO_LANES_MOVEBOTH_FIRST, and GNEMoveOperation::TWO_LANES_MOVEBOTH_SECOND.
Referenced by commitMove(), and moveElement().
|
staticprivate |
calculate width/height shape
Definition at line 582 of file GNEMoveElement.cpp.
References PositionVector::extrapolate2D(), GNEMoveOperation::firstGeometryPoint, PositionVector::length2D(), PositionVector::nearest_offset_to_point2D(), GNEMoveOperation::originalShape, PositionVector::reverse(), GNEMoveOperation::shapeToMove, and GNEMoveResult::shapeToUpdate.
Referenced by commitMove(), and moveElement().
|
staticprivate |
calculate lane offset
Definition at line 436 of file GNEMoveElement.cpp.
References Position::add(), GNELane::getLaneShape(), PositionVector::length2D(), PositionVector::nearest_offset_to_point2D(), PositionVector::positionAtOffset2D(), GUISUMOAbstractView::snapToActiveGrid(), GNEMoveOffset::x, GNEMoveOffset::y, and GNEMoveOffset::z.
Referenced by calculateMoveResult().
|
staticprivate |
calculate double movement over two lanes
Definition at line 499 of file GNEMoveElement.cpp.
References calculateLaneOffset(), GNELane::getLaneShape(), GNELane::getLengthGeometryFactor(), PositionVector::length2D(), GNEMoveResult::newFirstPos, and GNEMoveResult::newSecondPos.
|
staticprivate |
calculate double movement over one lane
Definition at line 488 of file GNEMoveElement.cpp.
References calculateLaneOffset(), GNELane::getLaneShape(), GNELane::getLengthGeometryFactor(), PositionVector::length2D(), GNEMoveResult::newFirstPos, and GNEMoveResult::newSecondPos.
|
staticprivate |
calculate single movement over one lane
Definition at line 477 of file GNEMoveElement.cpp.
References calculateLaneOffset(), GNELane::getLengthGeometryFactor(), GNEMoveResult::newFirstPos, and GNEMoveResult::newSecondPos.
Referenced by adjustBothPositions(), commitMove(), and moveElement().
|
protected |
calculate move shape operation
Definition at line 192 of file GNEMoveElement.cpp.
References GUIViewObjectsHandler::getGeometryPoints(), GUIViewObjectsHandler::getPositionOverShape(), gViewObjectsHandler, PositionVector::indexOfClosest(), PositionVector::insertAtClosest(), and Position::INVALID.
Referenced by GNETAZ::getMoveOperation(), GNEConnection::getMoveOperation(), GNECrossing::getMoveOperation(), GNEEdge::getMoveOperation(), GNEJunction::getMoveOperation(), GNELane::getMoveOperation(), GNEWalkingArea::getMoveOperation(), and GNEPoly::getMoveOperation().
|
staticprivate |
calculate new lane
Definition at line 510 of file GNEMoveElement.cpp.
References Position::distanceSquaredTo2D(), Position::distanceTo2D(), GNELane::getIndex(), GNEEdge::getLanes(), GNELane::getLaneShape(), GNELane::getParentEdge(), GUISUMOAbstractView::getPositionInformation(), PositionVector::nearest_offset_to_point2D(), and PositionVector::positionAtOffset2D().
Referenced by commitMove(), and moveElement().
|
static |
commit move element for the given offset
Definition at line 310 of file GNEMoveElement.cpp.
References PositionVector::add(), adjustBothPositions(), GNEMoveOperation::allowChangeLane, calculateExtrapolatedVector(), calculateMoveResult(), calculateNewLane(), GNEMoveResult::clearLanes(), commitMoveShape(), GNEMoveOperation::firstLane, GNEMoveResult::firstLaneOffset, GNEMoveOperation::firstPosition, GNEMoveOperation::geometryPointsToMove, GNEMoveResult::geometryPointsToMove, GNEMoveFrame::getCommonModeOptions(), GNELane::getLaneShapeLength(), GNEMoveFrame::CommonModeOptions::getMergeGeometryPoints(), GNEViewParent::getMoveFrame(), GNEViewNet::getViewParent(), GNEMoveOperation::HEIGHT, Position::INVALID, GNEMoveOperation::LENGTH, GNEMoveOperation::moveElement, GNEMoveResult::newFirstLane, GNEMoveResult::newFirstPos, GNEMoveResult::newSecondLane, GNEMoveResult::newSecondPos, GNEMoveOperation::ONE_LANE, GNEMoveOperation::ONE_LANE_MOVEFIRST, GNEMoveOperation::ONE_LANE_MOVESECOND, GNEMoveOperation::operationType, GNEMoveOperation::originalGeometryPoints, GNEMoveOperation::originalShape, PositionVector::removeDoublePoints(), GNEMoveOperation::secondLane, GNEMoveResult::secondLaneOffset, GNEMoveOperation::secondPosition, setMoveShape(), GNEMoveOperation::shapeToMove, GNEMoveResult::shapeToUpdate, GUISUMOAbstractView::snapToActiveGrid(), GNEMoveOperation::TWO_LANES_MOVEFIRST, GNEMoveOperation::TWO_LANES_MOVESECOND, GNEMoveOperation::WIDTH, GNEMoveOffset::x, GNEMoveOffset::y, and GNEMoveOffset::z.
Referenced by GNEViewNetHelper::MoveMultipleElementModul::finishMoveSelection(), GNEViewNetHelper::MoveSingleElementModul::finishMoveSingleElement(), GNEViewNetHelper::MoveMultipleElementModul::moveSelection(), and GNEViewNetHelper::MoveSingleElementModul::moveSingleElement().
|
privatepure virtual |
commit move shape
Implemented in GNEDemandElement, GNEDetector, GNEAdditional, GNEPoly, GNEPOI, GNEWalkingArea, GNELaneType, GNELane, GNEJunction, GNEInternalLane, GNEEdgeType, GNEEdge, GNECrossing, GNEConnection, GNEWalk, GNEVType, GNEVehicle, GNETransport, GNETranship, GNEStopPlan, GNEStop, GNERoute, GNERide, GNEPersonTrip, GNEPerson, GNEDistribution, GNEContainer, GNEVariableSpeedSignSymbol, GNEVariableSpeedSignStep, GNEVariableSpeedSign, GNEVaporizer, GNETractionSubstation, GNETAZSourceSink, GNETAZ, GNEStoppingPlace, GNERouteProbReroute, GNERouteProbe, GNERerouterSymbol, GNERerouterInterval, GNERerouter, GNEParkingSpace, GNEParkingAreaReroute, GNEOverheadWire, GNEMultiEntryExitDetector, GNELaneAreaDetector, GNEInstantInductionLoopDetector, GNEInductionLoopDetector, GNEEntryExitDetector, GNEDestProbReroute, GNEClosingReroute, GNEClosingLaneReroute, GNECalibratorFlow, GNECalibrator, and GNEAccess.
Referenced by commitMove().
|
pure virtual |
get move operation
Implemented in GNENetworkElement, GNEDemandElement, GNEAdditional, GNEPoly, GNEPOI, GNEWalkingArea, GNELaneType, GNELane, GNEJunction, GNEInternalLane, GNEEdgeType, GNEEdge, GNECrossing, GNEConnection, GNEWalk, GNEVType, GNEVehicle, GNETransport, GNETranship, GNEStopPlan, GNEStop, GNERoute, GNERide, GNEPersonTrip, GNEPerson, GNEDistribution, GNEContainer, GNEVariableSpeedSignSymbol, GNEVariableSpeedSignStep, GNEVariableSpeedSign, GNEVaporizer, GNETractionSubstation, GNETAZSourceSink, GNETAZ, GNEStoppingPlace, GNERouteProbReroute, GNERouteProbe, GNERerouterSymbol, GNERerouterInterval, GNERerouter, GNEParkingSpace, GNEParkingAreaReroute, GNEOverheadWire, GNEMultiEntryExitDetector, GNEDetector, GNEDestProbReroute, GNEClosingReroute, GNEClosingLaneReroute, GNECalibratorFlow, GNECalibrator, and GNEAccess.
|
static |
move element the for given offset (note: offset can be X-Y-0, 0-0-Z or X-Y-Z)
Definition at line 221 of file GNEMoveElement.cpp.
References PositionVector::add(), adjustBothPositions(), GNEMoveOperation::allowChangeLane, calculateExtrapolatedVector(), calculateMoveResult(), calculateNewLane(), GNEMoveResult::clearLanes(), GNEMoveOperation::firstLane, GNEMoveResult::firstLaneOffset, GNEMoveOperation::firstPosition, GNEMoveOperation::geometryPointsToMove, GNEMoveResult::geometryPointsToMove, GNELane::getLaneShapeLength(), GNEMoveOperation::HEIGHT, Position::INVALID, GNEMoveOperation::LENGTH, GNEMoveOperation::moveElement, GNEMoveResult::newFirstLane, GNEMoveOperation::ONE_LANE, GNEMoveOperation::ONE_LANE_MOVEFIRST, GNEMoveOperation::ONE_LANE_MOVESECOND, GNEMoveOperation::operationType, GNEMoveOperation::secondLane, GNEMoveOperation::secondPosition, setMoveShape(), GNEMoveOperation::shapeToMove, GNEMoveResult::shapeToUpdate, GUISUMOAbstractView::snapToActiveGrid(), GNEMoveOperation::TWO_LANES_MOVEFIRST, GNEMoveOperation::TWO_LANES_MOVESECOND, GNEMoveOperation::WIDTH, GNEMoveOffset::x, GNEMoveOffset::y, and GNEMoveOffset::z.
Referenced by GNEViewNetHelper::MoveSingleElementModul::getMovedElement(), GNEViewNetHelper::MoveMultipleElementModul::moveSelection(), and GNEViewNetHelper::MoveSingleElementModul::moveSingleElement().
|
privatedelete |
Invalidated assignment operator.
|
pure virtual |
remove geometry point in the clicked position
Implemented in GNEPoly, GNEPOI, GNEWalkingArea, GNELaneType, GNELane, GNEJunction, GNEInternalLane, GNEEdgeType, GNEEdge, GNECrossing, GNEConnection, GNEDemandElement, GNETAZ, and GNEAdditional.
Referenced by GNENetworkElement::getShapeEditedPopUpMenu(), and GNEViewNet::processLeftButtonPressNetwork().
|
privatepure virtual |
set move shape
Implemented in GNEDemandElement, GNEDetector, GNEAdditional, GNEPoly, GNEPOI, GNEWalkingArea, GNELaneType, GNELane, GNEJunction, GNEInternalLane, GNEEdgeType, GNEEdge, GNECrossing, GNEConnection, GNEWalk, GNEVType, GNEVehicle, GNETransport, GNETranship, GNEStopPlan, GNEStop, GNERoute, GNERide, GNEPersonTrip, GNEPerson, GNEDistribution, GNEContainer, GNEVariableSpeedSignSymbol, GNEVariableSpeedSignStep, GNEVariableSpeedSign, GNEVaporizer, GNETractionSubstation, GNETAZSourceSink, GNETAZ, GNEStoppingPlace, GNERouteProbReroute, GNERouteProbe, GNERerouterSymbol, GNERerouterInterval, GNERerouter, GNEParkingSpace, GNEParkingAreaReroute, GNEOverheadWire, GNEMultiEntryExitDetector, GNELaneAreaDetector, GNEInstantInductionLoopDetector, GNEInductionLoopDetector, GNEEntryExitDetector, GNEDestProbReroute, GNEClosingReroute, GNEClosingLaneReroute, GNECalibratorFlow, GNECalibrator, and GNEAccess.
Referenced by commitMove(), and moveElement().
|
protected |
move element lateral offset (used by elements placed over lanes
Definition at line 251 of file GNEMoveElement.h.
Referenced by GNEAccess::commitMoveShape(), GNEEntryExitDetector::commitMoveShape(), GNEInductionLoopDetector::commitMoveShape(), GNEInstantInductionLoopDetector::commitMoveShape(), GNEVehicle::commitMoveShape(), GNEAccess::setMoveShape(), GNEEntryExitDetector::setMoveShape(), GNEInductionLoopDetector::setMoveShape(), GNEInstantInductionLoopDetector::setMoveShape(), GNEStoppingPlace::setMoveShape(), GNEStop::setMoveShape(), GNEVehicle::setMoveShape(), GNEStoppingPlace::setStoppingPlaceGeometry(), GNEDemandElement::updateDemandElementGeometry(), GNEDemandElement::updateDemandElementSpreadGeometry(), GNEAccess::updateGeometry(), GNEEntryExitDetector::updateGeometry(), GNEInductionLoopDetector::updateGeometry(), GNEInstantInductionLoopDetector::updateGeometry(), GNELaneAreaDetector::updateGeometry(), GNEStop::updateGeometry(), and GNEVehicle::updateGeometry().