У меня возникло странное поведение с помощью svg_mapper. По крайней мере, я думаю, что это странно, но я также новичок в повышении геометрии, поэтому я мог бы делать что-то глупое.boost :: geometry svg_mapper svg origin, мое изображение перевернуто?
Происхождение svg похоже расположено в левом нижнем углу, но насколько я знаю, svg должен иметь начало по умолчанию в верхнем левом углу. У svg_mapper нет никакого интерфейса для управления системой координат, поэтому я уверен, что я неправильно настроил свой картограф.
Следующий пример является лишь примером, я на самом деле рисую структуру сетки, но проблема такая же. То, что я ожидаю от этого, - красная линия, начинающаяся в левом верхнем углу (0,0), вторая точка немного вправо, а затем последняя точка в нижнем правом углу. Но нет, он идет от нижнего левого в верхний правый.
Это ожидаемое поведение от svg_mapper или я не использую его правильно?
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");
Изображение выше является PNG, но SVG генерироваться выглядит следующим образом:
<?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>
Edit >> Использование подталкивание 1,61
Отличное объяснение. Спасибо, рашимото! Немного странно с жестко закодированной стратегией преобразования, было бы хорошо, если бы вы могли подменить свою собственную стратегию, но по крайней мере теперь я знаю, почему :) Я буду работать вокруг нее. – DbgCtrl
Заметил еще одну «странную» вещь с помощью svg_mapper. Все преобразуется в половину ширины svg в положительном x направлении. – DbgCtrl
Вы должны убедиться, что SVG действительно нарисован на вашей HTML-странице или везде с одинаковой шириной и высотой (или, по крайней мере, с тем же соотношением сторон), что и в конструкторе 'svg_mapper' (400x400 в вашем примере кода). – rhashimoto