标签: vector-graphics

矩形边界内的有效点搜索

我正在使用矢量地图编辑器,我有一组元素,每个元素都在视图中指定其边界框.当鼠标移动时,我想突出显示第一个元素,其边界框包含当前鼠标位置.现在我使用一个简单的列表并通过它,但由于元素的数量可能会增加,当前搜索算法的O(n)复杂性对于交互式应用程序将是有问题的.

什么是更好的算法/数据结构?

一些额外的约束/要求:

  • 填充边界框的数据结构必须是相对快速的(因为我需要做的,每次地图移动或变焦或投影的变化).
  • 该算法必须能够找到所有匹配元素(而不仅仅是第一个).原因是一些地图元素可能具有不规则的形状,因此简单的边界框匹配不够严格.然后我会查看匹配列表并进行精确匹配.
  • 顺序,其中所述盒被添加到所述一组需要保持某种方式-其被上述另一元件得出匹配他们的边界框时,应具有优先级的映射元素.

algorithm geometry vector-graphics computational-geometry data-structures

6
推荐指数
1
解决办法
1006
查看次数

可以将PDF转换为可以从.NET打印的矢量图像格式吗?

我们有一个.NET应用程序可以打印到真正的打印机和PDF,目前使用的是PDFsharp,但如果有更好的选择,可以更改该部分.大多数输出​​是生成的文本或图像,但可以有一个或多个页面附加到末尾.该页面由最终用户以PDF格式提供.

打印到纸张时,我们的用户使用预先打印的纸张,但在导出PDF的情况下,我们会将这些页面连接到最后,因为它们已经是PDF格式.

我们希望能够将这些PDF直接嵌入到打印流中,因此它们不需要预先打印的纸张.但是,将PDF转换为GDI页面(System.Drawing.Graphics)并没有什么好的选择.

是否有一种矢量格式,PDF可以通过某些外部程序转换为可以转换为GDI +页面而不会因首先转换为位图而降级?

c# pdf gdi vector-graphics

6
推荐指数
1
解决办法
3770
查看次数

将JUNG图导出为高分辨率图像(最好是基于矢量的)

在我的一个项目中,我使用JUNG2来可视化一个非常大的多父层次结构图,显示在一个applet中.我需要将图形的整个/部分导出为高分辨率静止图像,因为打印时屏幕截图看起来很可怕(特别是如果图形已经缩小).

我目前使用的代码如下:

public void writeToDisk(File saveToFolder, String filename) {
    //Dimension loDims = getGraphLayout().getSize();
    Dimension vsDims = getSize();

    int width = vsDims.width;
    int height = vsDims.height;
    Color bg = getBackground();

    BufferedImage im = new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);
    Graphics2D graphics = im.createGraphics();
    graphics.setColor(bg);
    graphics.fillRect(0,0, width, height);
    paintComponent(graphics);

    try{
       ImageIO.write(im,"png",new File(saveToFolder,filename));
    }catch(Exception e){
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

这会产生分辨率不是特别高的PNG图像.所以我的问题如下:

  1. 是否可以将PNG输出分辨率提高到300 dpi?
  2. 是否可以将图形或任何摆动组件导出到基于矢量的格式(如EPS,PDF或SVG)而不会有太多麻烦?我找到了几个用于在Java中管理基于矢量的图像的库(VectorGraphics2D,FreeHEP),但我不确定使用它们是否意味着我必须"重新绘制"图中的每个顶点和边缘.这显然不是很理想......
  3. 还有其他我可能错过的选择吗?

提前致谢,

java swing vector-graphics jung

6
推荐指数
1
解决办法
2828
查看次数

在矢量图像中创建QR码

我可以使用ZXing成功创建QR Code PNG图像,但没有简单的方法可以将输出作为SVG或EPS.

如何从QRCodeWriter创建的BitMatrix对象创建矢量图像?

qr-code vector-graphics zxing

6
推荐指数
3
解决办法
5005
查看次数

glFrustum函数有什么作用?

根据MSDN,我们将当前矩阵与透视矩阵相乘.我们在这里讨论什么矩阵?也来自MSDN:

"glFrustum函数将当前矩阵乘以此矩阵,结果替换当前矩阵.即,如果M是当前矩阵而F是平截头体透视矩阵,则glFrustum将M替换为M•F".

现在,根据我目前对12级微积分的知识(我目前在其中),M是一个向量,M点积F返回一个标量,那么如何用标量替换向量?

我也不确定"剪裁"平面是什么以及如何通过一个浮点值引用它们.

请根据参数和概念说明您的答案.我真的很感激.

我正在尝试通过本教程学习openGL:http://www.youtube.com/watch?v = WDGF7Bw6SUg .它实际上并不是很好,因为它没有解释任何东西,或者它假设一个人知道openGL.我非常感谢教学链接,我非常感谢您的时间和回复!我相信我可以挣扎并解决问题.

opengl graphics vector-graphics

6
推荐指数
2
解决办法
2万
查看次数

什么是CGVector?

在搜索文档后,我仍然无法找到合理的解释CGVector.文档中提到的唯一一次是它何时显示它typedef是什么.

struct CGVector {
   CGFloat dx;
   CGFloat dy;
};
typedef struct CGVector CGVector;
Run Code Online (Sandbox Code Playgroud)

从基本几何学我知道这dx意味着delta x,或x的变化.同样的道理dy.有了这些知识,CGVector从编程的角度来看,什么是(或任何一种矢量)?如果它有帮助,我试图在SpriteKit SKPhysicsBody和速度的上下文中理解一个向量.

objective-c vector-graphics sprite-kit

6
推荐指数
1
解决办法
3733
查看次数

矢量图像的颜色选择器不起作用

我有一个矢量图像(svg转换为xml):

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:better="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"
    tools:ignore="NewApi"
    android:viewportWidth="24"
    better:viewportWidth="24"
    android:viewportHeight="24"
    better:viewportHeight="24"
    android:width="24dp"
    android:height="24dp">
    <path
        android:pathData="M10.09 15.59l1.41 1.41 5 -5 -5 -5 -1.41 1.41 2.58 2.59 -9.67 0 0 2 9.67 0 -2.58 2.59zM19 3L5 3C3.89 3 3 3.9 3 5l0 4 2 0 0 -4 14 0 0 14 -14 0 0 -4 -2 0 0 4c0 1.1 0.89 2 2 2l14 0c1.1 0 2 -0.9 2 -2L21 5C21 3.9 20.1 3 19 3Z"
        better:pathData="M10.09 15.59l1.41 1.41 5 …
Run Code Online (Sandbox Code Playgroud)

svg android vector-graphics

6
推荐指数
1
解决办法
835
查看次数

以不同方式缩放SVG文件的不同部分

对于带有锯齿边缘的票证,我需要一个可变高度的svg-graphic.顶部和底部区段应按比例缩放以保持固定的纵横比,而中间区段应伸展以适合容器的尺寸.

这张图片应该是说明性的

不同的长宽比

我发现这个jsFiddle在水平而不是垂直方面做了很多我想做的事情,但我对viewbox不够精通,无法理解正在发生的事情并根据我的需要进行调整.我只是弄乱了我的档案.

我的svg文件目前非常简单; 顶部路径,底部路径和中间的矩形.它看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
     width="464px" height="464px" viewBox="0 0 464 464" enable-background="new 0 0 464 464" xml:space="preserve">
    <path fill="#FFF100" d="M432.846,10.522c-5.755,0.057-10.466-4.562-10.522-10.316c-0.001-0.069-0.001-0.137,0-0.206h-20.839
        c0.057,5.754-4.563,10.465-10.316,10.522c-5.755,0.057-10.466-4.562-10.522-10.316c0-0.069,0-0.137,0-0.206h-20.843
        c0.058,5.754-4.561,10.465-10.315,10.522S339.021,5.96,338.965,0.206c0-0.069,0-0.137,0-0.206h-20.836
        c0.057,5.754-4.562,10.465-10.316,10.522c-5.754,0.057-10.465-4.562-10.522-10.316c0-0.069,0-0.137,0-0.206h-20.437
        c0,24.772-20.082,44.853-44.854,44.853c-24.771,0-44.853-20.081-44.853-44.853H166.71c0.056,5.754-4.562,10.465-10.317,10.522
        c-5.754,0.057-10.465-4.562-10.521-10.316c-0.001-0.069-0.001-0.137,0-0.206h-20.839c0.098,5.754-4.486,10.498-10.24,10.596
        c-5.754,0.099-10.498-4.486-10.596-10.24c-0.002-0.119-0.002-0.238,0-0.356H83.355c0.057,5.754-4.563,10.465-10.317,10.522
        S62.573,5.96,62.517,0.206c0-0.069,0-0.137,0-0.206H41.677c0.057,5.754-4.562,10.465-10.316,10.522
        C25.607,10.579,20.896,5.96,20.839,0.206c-0.001-0.069-0.001-0.137,0-0.206H0v56h464V0h-20.839
        C443.219,5.754,438.6,10.465,432.846,10.522z"/>
    <path fill="#FFF100" d="M432.846,453.478c-5.755-0.056-10.466,4.563-10.522,10.317c-0.001,0.068-0.001,0.137,0,0.205h-20.839
        c0.057-5.754-4.563-10.466-10.316-10.522c-5.755-0.056-10.466,4.563-10.522,10.317c0,0.068,0,0.137,0,0.205h-20.843
        c0.058-5.754-4.561-10.466-10.315-10.522c-5.755-0.056-10.466,4.563-10.522,10.317c0,0.068,0,0.137,0,0.205h-20.836
        c0.057-5.754-4.562-10.466-10.316-10.522c-5.754-0.056-10.465,4.563-10.522,10.317c0,0.068,0,0.137,0,0.205h-20.437
        c0-24.771-20.082-44.854-44.854-44.854c-24.771,0-44.853,20.082-44.853,44.854H166.71c0.056-5.754-4.562-10.466-10.317-10.522
        c-5.754-0.056-10.465,4.563-10.521,10.317c-0.001,0.068-0.001,0.137,0,0.205h-20.839c0.098-5.754-4.487-10.498-10.24-10.597
        c-5.754-0.098-10.498,4.486-10.596,10.24c-0.002,0.119-0.002,0.238,0,0.356H83.355c0.057-5.754-4.563-10.466-10.317-10.522
        c-5.754-0.056-10.465,4.563-10.522,10.317c0,0.068,0,0.137,0,0.205H41.677c0.057-5.754-4.562-10.466-10.316-10.522
        c-5.754-0.056-10.465,4.563-10.521,10.317c-0.001,0.068-0.001,0.137,0,0.205H0v-56h464v56h-20.839 …
Run Code Online (Sandbox Code Playgroud)

svg vector-graphics

6
推荐指数
1
解决办法
1407
查看次数

VTK - 如何使用单个actor渲染多个3d文本对象

我试图使用vtk对象vtkVectorText渲染文本.它适用于单个3d位置.我需要的是在一些3d(vtkPoint)点上方放置一个3d文本.我尝试用vtkTextActor3d做这个,但是每个文本对象都需要一个单独的actor,我最终得到了10k演员,当我试图旋转场景时,这是非常糟糕和滞后的.

我还尝试应用一些appendFilter来创建一个vtkVectorText数组,从appendFilter的对象获取非结构化网格,然后将其转换为polydata,以便使用我想要的点位置渲染非结构化网格.它没有显示任何内容,因为我无法弄清楚执行此操作的最佳方法是什么.

有人可以帮我弄这个吗?

这是我上一部分的代码:

vtkSmartPointer<vtkAppendFilter> appendFilter = vtkSmartPointer<vtkAppendFilter>::New();
//for each point
for (int i = 0; i < N;i++) {
    vtkSmartPointer<vtkVectorText> vecText = vtkSmartPointer<vtkVectorText>::New();
    vecText->SetText("My text, needs to appear multiple times");
    vecText->Update();
    appendFilter->AddInputData(vecText->GetOutput());
    appendFilter->Update();
}
vtkSmartPointer<vtkUnstructuredGrid> unstructuredGrid = appendFilter->GetOutput();
unstructuredGrid->Allocate(N);
unstructuredGrid->SetPoints(points);
vtkSmartPointer<vtkGeometryFilter> geometryFilter = vtkSmartPointer<vtkGeometryFilter>::New();
geometryFilter->SetInputData(unstructuredGrid);
geometryFilter->Update();
vtkSmartPointer<vtkPolyDataMapper> textMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
textMapper->SetInputConnection(geometryFilter->GetOutputPort());
vtkSmartPointer<vtkActor> textActor = vtkSmartPointer<vtkActor>::New();
textActor->SetMapper(textMapper);
textActor->GetProperty()->SetColor(0, 1, 0);

renderer->AddActor(textActor);
Run Code Online (Sandbox Code Playgroud)

3d vector-graphics vtk

6
推荐指数
1
解决办法
953
查看次数

R中的颜色渐变PDF和位图输出

我正努力在R中获得视觉上可接受的颜色渐变(有关我的特定情况的详细说明,请参见此处).简而言之,问题是当R窗口中的输出看起来没问题时,PDF会在用于生成渐变的段之间显示细白线.

n <- 100
cc <- colorRampPalette(c("red", "blue"))(n)
plot.new()
par(mar=rep(0,4))
sapply(1:n, function(i) rect((i-1)/n, 0, i/n, 1, col=cc[i], border=NA))
dev.copy2pdf(file="test.pdf")
Run Code Online (Sandbox Code Playgroud)

结果如下:

截图1

你可以看到细细的白线.它们的位置取决于缩放,因此我假设它们是PDF显示方式的工件.在另一个缩放中同样如此:

截图2

不幸的是,这些线条在打印输出上也是可见的.我想问题可能是当矢量图形渲染到位图进行显示或打印时,PDF中的坐标如何变圆.

可能的解决方案是使用彼此重叠的段.这仅适用于纯色; 不幸的是,我也希望在渐变中使用透明色.

我可以做些什么来使我的PDF输出更好?

pdf color-scheme r vector-graphics

6
推荐指数
1
解决办法
225
查看次数