Ich habe ein seltsames Verhalten mit dem Svg_mapper. Zumindest finde ich es seltsam, aber ich bin auch neu bei boost :: geometry, also könnte ich etwas Dummes machen.boost :: Geometrie Svg_mapper Svg Herkunft, mein Bild ist umgedreht?
Der Ursprung des Svg scheint in der unteren linken Ecke zu liegen, aber soweit ich weiß, sollte ein Svg seinen Standardursprung in der oberen linken Ecke haben. Der svg_mapper scheint keine Schnittstelle zu haben, um das Koordinatensystem zu manipulieren, so dass ich ziemlich sicher bin, dass ich meinen Mapper nicht falsch konfiguriert habe.
Der folgende Code ist nur ein Beispiel, ich zeichne tatsächlich eine Gitterstruktur, aber das Problem ist das gleiche. Was ich davon erwarte, ist eine rote Linie, die oben links (0,0) beginnt, ein zweiter Punkt ein bisschen nach rechts und dann der letzte Punkt in der unteren rechten Ecke. Aber nein, es geht von links unten nach rechts oben.
Ist dieses erwartete Verhalten von der Svg_mapper oder verwende ich es nicht richtig?
typedef boost::geometry::model::d2::point_xy<double> point_type;
typedef boost::geometry::model::linestring<point_type> linestring_type;
typedef boost::geometry::svg_mapper<point_type> mapper_type;
std::ofstream svg("map.svg");
mapper_type mapper(svg, 400, 400);
linestring_type ls2{{0.0, 0.0}, {100.0, 0.0}, {400.0, 400.0}};
mapper.add(ls2);
mapper.map(ls2, "stroke:rgb(250,0,0);stroke-width:2");
Das obige Bild ist ein png, aber der SVG erzeugt sieht wie folgt aus:
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<polyline points="0,400 100,400 400,0" style="stroke:rgb(250,0,0);stroke-width:2;fill:none"/>
</svg>
Bearbeiten >> Mit Boost 1,61
Eine ausgezeichnete Erklärung. Danke rhashimoto! Ein bisschen seltsam mit einer hart codierten Transformationsstrategie, wäre schön gewesen, wenn Sie Ihre eigene Strategie ersetzen könnten, aber jetzt weiß ich zumindest warum :) Ich werde es umgehen. – DbgCtrl
bemerkte eine andere "seltsame" Sache mit dem Svg_mapper. Alles ist in positiver x-Richtung halb so groß wie die svg-Breite. – DbgCtrl
Sie sollten sicherstellen, dass das SVG tatsächlich in Ihrer HTML-Seite gezeichnet wird oder wo die gleiche Breite und Höhe (oder mindestens das gleiche Seitenverhältnis) wie im Konstruktor 'svg_mapper' (400x400 in Ihrem Beispielcode). – rhashimoto