SVG `<path>` Неточность

1

Я использую D3.js для рисования сотен SVG <path> на холсте в соответствии с некоторыми вычислениями.


Вот фрагмент типичного SVG:

<path element="true" class="generation1" d="M 0 0 H 11.276566666666668 V 10.733333333333333 H 0 L 0 0" transform="translate(90.21253333333334,0)" fill="rgb(153, 126, 0)" stroke-width="1" stroke="rgb(153, 126, 0)" style="opacity: 1;"></path><path element="true" class="generation1" d="M 0 0 H 11.276566666666668 V 10.733333333333333 H 0 L 0 0" transform="translate(112.76566666666668,0)" fill="rgb(153, 126, 0)" stroke-width="1" stroke="rgb(153, 126, 0)" style="opacity: 1;"></path><path element="true" class="generation1" d="M 11.276566666666668 10.733333333333333 L 11.276566666666668 5.366666666666666 L 0 5.366666666666666 L 0 10.733333333333333 Z" transform="translate(157.87193333333335,0)" fill="rgb(153, 126, 0)" stroke-width="1" stroke="rgb(153, 126, 0)" style="opacity: 1;"></path><path element="true" class="generation1" d="M 11.276566666666668 10.733333333333333 h -11.276566666666668 L 11.276566666666668 0 Z" transform="translate(180.42506666666668,0)" fill="rgb(153, 126, 0)" stroke-width="1" stroke="rgb(153, 126, 0)" style="opacity: 1;"></path>


Когда я не даю каждому <path> штриху одного цвета, между фигурами есть много и много мелких промежутков. Однако, когда я добавляю удар, возникают другие недостатки, ниже.

Изображение 174551

Есть углы, которые не встречаются, формы, которые начинаются не в том месте, и в конечном итоге покрываются другими, пробелы, где вид фона или неправильная форма видны и т.д. Расхождения хуже при определенных уровнях масштабирования.


Кажется, у меня есть версия проблемы, описанная здесь, где ответчик сказал, что проблема связана с сглаживанием. Ответчик предложил добавить shape-rendering: crispEdges, но это на самом деле делает проблему намного хуже для меня и не удовлетворяет вопрос об этом вопросе. Добавление штриха устраняет большинство, но не все, пробелов между <path> s, но опять же, что вызывает другие проблемы.

Я также попробовал shape-rendering: geometricPrecision, но это не помогло.


Что я могу сделать, чтобы устранить пробелы между фигурами без создания дополнительных расхождений?

Теги:
d3.js
svg
geometry
precision

1 ответ

0
Лучший ответ

Хорошо, хорошо, что это не похоже на действительно отличное решение здесь.

Я понял, однако, что stroke-width может иметь значения меньше 1. Таким образом, я играл с различными фракциями до тех пор, пока большая часть промежутков между фигурами не была покрыта, но другие искажения были сведены к минимуму.

Я приземлился на stroke-width:.5.

Если кто-то найдет что-то еще, я с радостью приму это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню