void QgsVectorFieldSymbolLayer::renderPoint( QPointF point, QgsSymbolRenderContext& context ) { if ( !mLineSymbol ) { return; } const QgsRenderContext& ctx = context.renderContext(); const QgsFeature* f = context.feature(); if ( !f ) { //preview QPolygonF line; line << QPointF( 0, 50 ); line << QPointF( 100, 50 ); mLineSymbol->renderPolyline( line, nullptr, context.renderContext() ); } double xComponent = 0; double yComponent = 0; double xVal = 0; if ( f && mXIndex != -1 ) { xVal = f->attribute( mXIndex ).toDouble(); } double yVal = 0; if ( f && mYIndex != -1 ) { yVal = f->attribute( mYIndex ).toDouble(); } switch ( mVectorFieldType ) { case Cartesian: xComponent = QgsSymbolLayerUtils::convertToPainterUnits( ctx, xVal, mDistanceUnit, mDistanceMapUnitScale ); yComponent = QgsSymbolLayerUtils::convertToPainterUnits( ctx, yVal, mDistanceUnit, mDistanceMapUnitScale ); break; case Polar: convertPolarToCartesian( xVal, yVal, xComponent, yComponent ); xComponent = QgsSymbolLayerUtils::convertToPainterUnits( ctx, xComponent, mDistanceUnit, mDistanceMapUnitScale ); yComponent = QgsSymbolLayerUtils::convertToPainterUnits( ctx, yComponent, mDistanceUnit, mDistanceMapUnitScale ); break; case Height: xComponent = 0; yComponent = QgsSymbolLayerUtils::convertToPainterUnits( ctx, yVal, mDistanceUnit, mDistanceMapUnitScale ); break; default: break; } xComponent *= mScale; yComponent *= mScale; QPolygonF line; line << point; line << QPointF( point.x() + xComponent, point.y() - yComponent ); mLineSymbol->renderPolyline( line, f, context.renderContext() ); }
void QgsVectorFieldSymbolLayer::renderPoint( const QPointF& point, QgsSymbolV2RenderContext& context ) { if ( !mLineSymbol ) { return; } const QgsFeature* f = context.feature(); if ( !f ) { //preview QPolygonF line; line << QPointF( 0, 50 ); line << QPointF( 100, 50 ); mLineSymbol->renderPolyline( line, 0, context.renderContext() ); } double xComponent = 0; double yComponent = 0; double xVal = 0; if ( mXIndex != -1 ) { xVal = f->attributeMap()[mXIndex].toDouble(); } double yVal = 0; if ( mYIndex != -1 ) { yVal = f->attributeMap()[mYIndex].toDouble(); } switch ( mVectorFieldType ) { case Cartesian: xComponent = context.outputLineWidth( xVal ); yComponent = context.outputLineWidth( yVal ); break; case Polar: convertPolarToCartesian( xVal, yVal, xComponent, yComponent ); xComponent = context.outputLineWidth( xComponent ); yComponent = context.outputLineWidth( yComponent ); break; case Height: xComponent = 0; yComponent = context.outputLineWidth( yVal ); break; default: break; } xComponent *= mScale; yComponent *= mScale; QPolygonF line; line << point; line << QPointF( point.x() + xComponent, point.y() - yComponent ); mLineSymbol->renderPolyline( line, f, context.renderContext() ); }
void RotateAround::update(float time) { CC_UNUSED_PARAM(time); if(_target) { const float elapsed = getElapsed(); const float percent = elapsed / _duration; const float angle = _reversed ? 360.f * -percent : 360.f * percent; const PolarCoord polarCoord {_startPolarCoord.r, _startPolarCoord.a + angle}; Point pos = convertPolarToCartesian(polarCoord); pos = Point(_centerOfRotation.x + pos.x, _centerOfRotation.y + pos.y); _target->setPosition(pos); } }