У меня небольшой научный проект, связанный с векторными изображениями, а точнее гравировкой с ЧПУ.
В этом проекте мне нужно создать файлы с блоками (например, в форме квадрата),заполнены векторными линиями, которые вращаются в зависимости от конкретных параметров.Для этого я использую Vectorgraphics2d (http://trac.erichseifert.de/vectorgraphics2d/)
. Часть кода выглядит следующим образом:
1) Создание строки (в массиве)
Graphics2D vg2d = new VectorGraphics2D();
Line2D.Double[] numberOfLinesGroup = new Line2D.Double[numberOfLines];
for (int x = 0; x < numberOfLines ; x++) {
double pointPX = xPosition-blurrWidth;
double pointPY = yPosition + (x * heightDistance);
double pointNX = xPosition + (blurrWidth*2);
double pointNY = yPosition + (x * heightDistance);
numberOfLinesGroup[x] = new Line2D.Double( pointPX, pointPY, pointNX, pointNY);
}
2) Поворот всей картинки:
vg2d.rotate(angle, xPosition + (blurrWidth / 2), yPosition + (blurrHeight / 2));
3) Отсечение с заданной формой
Rectangle2D rect = new Rectangle2D.Float();
rect.setRect(xPosition, yPosition, blurrWidth, blurrHeight);
vg2d.setClip(rect);
4) Рисование конечной картинки
for (int y = 0; y < numberOfLines; y++) {
vg2d.draw(numberOfLinesGroup[y]);
}
Проблема:
Визуально файл выглядит нормально: Результирующее изображение
Но когда я помещаю его в чпу или любой другой вектор с помощью программного обеспечения (CorelDraw, Illustrator и т. Д.), Он все равновидит эти линии за пределами области отсечения Внешний вид из векторного программного обеспечения
Есть ли способ вырезать этих линий, чтобы они существовали только в области формы?Может быть, другие библиотеки, которые я не знаю, будут поддерживать такую функцию?
Другой вопрос, когда я открываю файл с помощью Adobe Reader, он кричит "BBox is invalid".Любая идея, что это значит?
Был бы признателен за вашу помощь!
ps Я полагаю, что было бы возможно создать код, который рассчитывает линейную функцию вышеупомянутой линии, проверьтепересечение с формой и создать новую линию, основываясь на этих найденных точках.Это, вероятно, подойдет для простых форм, таких как квадрат или круг, но для более сложных - я так не думаю.Тем не менее, такая математика для меня слишком большая:)