33#ifndef RACK_GRAPHICS_RADAR
34#define RACK_GRAPHICS_RADAR
40#include <drain/image/GeoFrame.h>
41#include <drain/image/TreeElemUtilsSVG.h>
42#include <drain/util/ClassXML.h>
44#include "radar/Composite.h"
45#include "radar/RadarProj.h"
85 drain::image::TreeSVG & getGraphicStyle(drain::image::TreeSVG &
svgDoc);
95DRAIN_ENUM_DICT(rack::Graphic::GRAPHIC);
96DRAIN_ENUM_OSTREAM(rack::Graphic::GRAPHIC);
99DRAIN_ENUM_CLASSXML(rack::Graphic::GRAPHIC);
109 void deriveMaxRange(
const Hi5Tree &
srcPolar){
114 double getRange(
double r=1.0){
130 double maxRange = 0.0;
147 RadarSVG(
int radialBezierResolution = 0){
148 if (radialBezierResolution > 0){
228 getCubicBezierConf(conf,
n);
229 radialBezierResolution =
n;
233 mout.error(
"To small radialBezierResolution: ",
n);
253 double radialCoeff = 1.0;
254 double angularOffset = 0.0;
264 getCubicBezierConf(conf, 0.0, 2.0*
M_PI /
static_cast<double>(
n));
273 polarToMeters(radius, azimuth,
geoPoint);
280 radarProj.
projectFwd(radius*::sin(azimuth), radius*::cos(azimuth), geoPoint.x, geoPoint.y);
307 void moveTo(drain::svgPATH & elem,
double radius,
double azimuth)
const {
313 void lineTo(drain::svgPATH & elem,
double radius,
double azimuth)
const {
315 lineTo(elem, imgPoint, radius, azimuth);
319 void lineTo(drain::svgPATH & elem,
drain::Point2D<int> & imgPoint,
double radiusM,
double azimuthR)
const {
320 convert(radiusM, azimuthR, imgPoint);
321 elem.absolute<drain::svgPATH::LINE>(imgPoint.x, imgPoint.y);
332 void cubicBezierTo(drain::svgPATH & elem,
double radiusM,
double azimuthStartR,
double azimuthEndR)
const ;
344 void close(drain::svgPATH & elem)
const {
346 elem.absolute<drain::svgPATH::CLOSE>();
368 int radialBezierResolution;
417const image::TreeSVG & image::TreeSVG::operator[](
const rack::Graphic::GRAPHIC & cls)
const {
418 return (*
this)[Enum<rack::Graphic::GRAPHIC>::dict.getKey(cls,
false)];
424image::TreeSVG & image::TreeSVG::operator[](
const rack::Graphic::GRAPHIC & cls) {
425 return (*
this)[Enum<rack::Graphic::GRAPHIC>::dict.getKey(cls,
false)];
431bool image::TreeSVG::hasChild(
const rack::Graphic::GRAPHIC & cls)
const {
432 return hasChild(Enum<rack::Graphic::GRAPHIC>::dict.getKey(cls,
true));
A wrapper marking string an CSS effect.
Definition ClassXML.h:57
LogSourc e is the means for a function or any program segment to "connect" to a Log.
Definition Log.h:326
void projectFwd(double &x, double &y) const
Forward projection (in-place)
Definition Proj6.h:190
A map of Variables.
Definition VariableMap.h:61
Array with georeferencing support.
Definition GeoFrame.h:56
virtual void m2pix(double x, double y, int &i, int &j) const
Scales geographic map coordinates to image coordinates.
Definition GeoFrame.h:349
Cartesian composite (mosaic) of data from several radars.
Definition Composite.h:102
A map of radar data, indexed by quantity code (DBZH, VRAD, etc).
Definition Data.h:1293
Definition graphics-radar.h:50
Definition graphics-radar.h:104
Definition RadarProj.h:99
Vector graphics for both composites and single radar data (polar coordinates).
Definition graphics-radar.h:142
void setRadialResolution(int n)
Number of "sectors" in a sphere.
Definition graphics-radar.h:226
drain::image::GeoFrame geoFrame
Geographic extent and projection (Cartesian)
Definition graphics-radar.h:205
std::string source
If r is inside +/-100% = [-1.0,1.0], return that portion of maximum range, else the argument as such.
Definition graphics-radar.h:202
void updateCartesianConf(const drain::VariableMap &where)
Read meta data related to Cartesian data, that is, geographic configuration of a radar composite.
Definition graphics-radar.cpp:210
void moveTo(drain::svgPATH &elem, drain::Point2D< int > &imgPoint, double radiusM, double azimuthR) const
Move to image point at (radius, azimuth)
Definition graphics-radar.h:297
void drawCircle(drain::svgPATH &elem, const drain::Range< double > &radius) const
Convenience: draw circle (disk or annulus)
Definition graphics-radar.h:362
void cubicBezierTo(drain::svgPATH &elem, double radiusM, double azimuthStartR, double azimuthEndR) const
Single command to draw arc.
Definition graphics-radar.cpp:283
void drawSector(drain::svgPATH &elem, const drain::Range< double > &radius, const drain::Range< double > &azimuthR={0.0, 0.0}) const
Convenience: draw sector, starting from radius.min, ending at radius.max, in azimuth range azimuthR....
Definition graphics-radar.cpp:350
void updateRadarConf(const drain::VariableMap &where)
Read meta data related to polar coordinates, that is, geographic configuration of a single radar.
Definition graphics-radar.cpp:189
PolarRadarConf radarProj
Sets some CSS properties applicable in radar graphics (grids, sectors).
Definition graphics-radar.h:182
Definition AltitudeOp.cpp:42
A container for a static dictionary of enumeration values.
Definition Enum.h:51
Definition graphics-radar.h:249
double delta
Sector angle.
Definition graphics-radar.h:252