LINUX.ORG.RU

SVG, параметры

 


0

1

Приветствую всех и с наступившим!

Коротко о сути вопроса - создается svg:

width=«7mm» height=«4.688mm» viewBox=«0 0 7 4.688»

в котором два прямоугольника лежащих друг над другом, смещенных относительно друг друга по горизонтали, верхний правее, нижний левее. Для них прописываются координаты/размеры:

x=«2.47» y=«2.4237» width=«3.4322» height=«2.06»

x=«1.098» y=«0.1852» width=«3.4322» height=«2.06»

все создается, но наоборот - верхний левее, а нижний правее. Чтобы понять что происходит создаю по этим данным svg в Inkscape и в нем получаю:

x=«2.47» y=«292.52» width=«3.4322» height=«2.06»

x=«1.098» y=«294.75» width=«3.4322» height=«2.06»

с добавлением в g: transform=«translate(0 -292.31)». Единственное, что я из этого понял, это то, что вычитание из координаты y верхнего блока дает координату нижнего и наоборот:

292.52 - 292.31 = 0.21

294.75 - 292.31 = 2.44

Как же рассчитывается этот сдвиг и новые координаты Y, из каких исходных или от чего?


Похоже, ты ошибся с направлением оси Y. Нулевая точка SVG вверху слева, а не внизу, как общепринято в математике/геометрии.

Elyas ★★★★★
()
Последнее исправление: Elyas (всего исправлений: 1)
Ответ на: комментарий от Elyas

Не похоже, ибо при задании координат и размеров в Inkscape, они становятся на свои места, только Inkscape на выходе добавляет трансляцию, и все нормально,а я готовлю без и получается наоборот.

bezman
() автор топика
Ответ на: комментарий от Elyas

Да и координаты прямоугольников отсчитываются с нижнего левого угла, во всех ли редакторах так не знаю, в Inkscape так, потому они и расставляются как надо.

bezman
() автор топика
Ответ на: комментарий от Elyas

Так я и так понимаю, и с одинаковыми размерами :) То есть если в редакторе задавать эти же координаты и размеры, то они расставляются как надо - от левого верхнего угла, по координатам левого нижнего угла. Так же и я готовлю svg, но у меня при этом получается «перевернутое», а Inkscape готовит нормальное, но при этом нужна трансляция. Я и другие готовил, то же самое получается - на всех добавляется трансляция. Как он ее рассчитывает, от чего …

bezman
() автор топика
Ответ на: комментарий от RazrFalcon

Так для него и заданы координаты от нижнего угла, он же и расставляет фигуры как надо, вот откуда эта трансляция добавляется не понять.

bezman
() автор топика
Ответ на: комментарий от bezman

откуда эта трансляция добавляется не понять.

Это высота A4 без поля. Ставится, чтоб не пересчитывать.

anonymous
()
Ответ на: комментарий от bezman

Вся компьютерная графика пляшет от 0,0 слева/вверху. Это технически обосновано.

Все CADы пляшут от слева/внизу просто чтобы быть ближе к человеку за кульманом (плоттером, дигитайзером).

Обычный SVG не совсем подходит для чертежей. Это не родной формат. Когда-то SVGшный clipPath мне весь мозг вынес на попытках его эмулировать в DXF. ) Возможно, этот программист сэкономил себе мозг прям на входе его сразу transform и больше об этом не думать )

Toxo2 ★★★
()
Ответ на: комментарий от Toxo2

Похоже что да, это связано с размером А4, его высотой, ибо Inkscape при задании размера менее его помещает документ вниз, то есть у него отсчет оттуда. Получается, что -292.31, это 297 - 4.688. Осталось понять как он получает для перового 292.52, а для второго 294.75.

bezman
() автор топика
Ответ на: комментарий от bezman

Может быть, тогда и на Inkscape ориентироваться не надо? Раз вам CAD не нужен.
Смотрите на свой получившийся SVG через браузер - там SVG будет «более честным». Мне так кажется.

Toxo2 ★★★
()
Ответ на: комментарий от Toxo2

Я и не ориентируюсь на Inkscape, это я в нем проверял почему у меня перевернутое получается. А SVG у меня как раз и для веб страниц, и оно не должно быть перевернутым.

bezman
() автор топика
Ответ на: комментарий от bezman

Решил я

Не видим. «Тема» не обозначена «Решённой».

anonymous
()

Могу посоветовать тебе открыть SVG в браузере и через chrome dev tools менять параметры в реальном времени - эдакий дебаггер поведение SVG получится

abs ★★★
()
Ответ на: комментарий от anonymous

Да у меня последний, но что-то такого не попадалось. За картинку спасибо, проверю потом. Где тут обозначить «решено»?

bezman
() автор топика
Ответ на: комментарий от abs

А я его где в блокноте открываю? :)

В том то и проблема, что они и выглядят в нем перевернутыми. Буду иначе готовить теперь координату Y, а этим также занимается браузер, и все будет норма.

bezman
() автор топика
Ответ на: комментарий от anonymous

В теме в смысле у заголовка ее? И что там за пункт, не вижу такого. Вообще с интерфейсом этого форума разобраться, это надо иметь терпение. :)

bezman
() автор топика
Ответ на: комментарий от bezman

Никакой реакции

Ты просил показать «тему», я показал. Не смог в ней найти нужный пункт или что?

anonymous
()
Ответ на: комментарий от anonymous

Если имеется ввиду щелкнули по «параметры» и где-то там …, то перехода никуда нет. Если щелкнуть по svg, надо полагать это и есть третий «параметр», перешел, и где там «кнопка вопрос решен», «тема закрыта» и т.п.?

bezman
() автор топика
Ответ на: комментарий от bezman

и где там «кнопка

По памяти:

bezman
06.01.20 07:34:24
[Ответить на это сообщение] [Ссылка] [Отметить ...] 
anonymous
()
Ответ на: комментарий от bezman

Ничего я тут не могу найти

Хе-хе. У тебя походу score недостаточно. Иногда забываю насколько дебилен механизм ЛОРа. Хотя сам же из-за этого в аноны ушёл.

anonymous
()
Ответ на: комментарий от bezman

у меня последний

Ой, ну да. Получается не в последнем, а в следующем, в 1.0. В бете уже есть.

anonymous
()
Ответ на: комментарий от anonymous

Да, так всегда - пришел впервые, значит раб на галерах. :)

А что касаемо темы, так:

Высота А4 - высота SVG, это трансляция для группы. Для каждого элемента группы: высота А4 - (высота SVG + y координата элемента группы)

bezman
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.