问题标签 [graphics]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
visual-studio-2008 - 如何为 Visual C++ 2008 (Express edition) 编译 Cairo
大多数预编译的 Windows 二进制文件都是使用 MSYS+gcc 工具链制作的。它使用与 Visual C++ 2005/2008 不兼容的 MSVCRT 运行时。
那么,如何仅为 Visual C++ 编译 Cairo 1.6.4(或更高版本)。包括依赖项(png、zlib、pixman)。
graphics - 我需要一种算法来渲染软画笔笔触
我有一组鼠标点、一个笔画宽度和一个柔软度。我可以画出柔和的圆圈和柔和的线条。我应该使用哪种算法来绘制我的点数组?我希望交叉线看起来像端点一样漂亮。
math - 你如何计算椭圆的轴对齐边界框?
如果椭圆的长轴是垂直的或水平的,那么边界框的计算很容易,但是当椭圆旋转时呢?
到目前为止,我能想到的唯一方法是计算周边的所有点并找到最大/最小 x 和 y 值。似乎应该有一个更简单的方法。
如果有一个函数(在数学意义上)以任意角度描述椭圆,那么我可以使用它的导数来找到斜率为零或未定义的点,但我似乎找不到。
编辑:澄清一下,我需要轴对齐的边界框,即它不应该与椭圆一起旋转,而是与 x 轴保持对齐,因此转换边界框将不起作用。
graphics - 如何使用 ImageMagick 将图标连接成单个图像?
我想在网站上使用CSS 精灵而不是单独的图像文件,用于大量相同大小的小图标。如何使用ImageMagick将它们连接(平铺)成一张大图像?
c++ - 帮助合并向量的算法
我需要一个非常快速的算法来完成以下任务。我已经实现了几种完成它的算法,但是它们对于我需要的性能来说都太慢了。它应该足够快,以至于算法可以在现代 CPU 上每秒至少运行 100,000 次。它将在 C++ 中实现。
我正在使用跨度/范围,这是一种在一条线上具有起点和终点坐标的结构。
我有两个跨度向量(动态数组),我需要合并它们。一个向量是 src,另一个是 dst。向量按跨度起始坐标排序,跨度在一个向量内不重叠。
src 向量中的 span 必须与 dst 向量中的 span 合并,这样得到的向量仍然是排序的并且没有重叠。IE。如果在合并期间检测到重叠,则将两个跨度合并为一个。(合并两个跨度只是改变结构中的坐标的问题。)
现在,还有一个问题,src 向量中的跨度必须在合并期间“加宽”。这意味着将在 src 中每个跨度的开始坐标添加一个常量,并将另一个(更大的)常量添加到结束坐标。这意味着在 src 跨度扩大后,它们可能会重叠。
到目前为止,我得出的结论是它不能完全就地完成,需要某种临时存储。我认为它应该在线性时间超过 src 和 dst 总和的元素数量。
任何临时存储都可能在算法的多次运行之间共享。
我尝试过的两种太慢的主要方法是:
将 src 的所有元素附加到 dst,在附加之前扩展每个元素。然后运行就地排序。最后,使用“读”和“写”指针遍历结果向量,读指针在写指针之前运行,在进行时合并跨度。当所有元素都被合并(读指针到达末尾) dst 被截断。
创建一个临时工作向量。通过重复从 src 或 dst 中选择下一个元素并合并到工作向量中来进行如上所述的简单合并。完成后,将工作向量复制到 dst 并替换它。
第一种方法的问题是排序是 O((m+n)*log(m+n)) 而不是 O(m+n) 并且有一些开销。这也意味着 dst 向量必须增长得比它真正需要的大得多。
第二个主要问题是大量复制并再次分配/释放内存。
如果您认为需要,可以更改用于存储/管理跨度/向量的数据结构。
更新:忘了说数据集有多大。最常见的情况是任一向量中有 4 到 30 个元素,并且 dst 为空或 src 和 dst 中的跨度之间存在大量重叠。
c# - 绘图和应用程序退出时如何防止 C# 中的 ObjectDisposedException
我是 CompSci 的学生,在 C# 方面相当新,我正在为一个班级做一个“约瑟夫问题”程序,我创建了一个退出按钮,它调用 Application.Exit() 随时退出,但如果 C# 仍然处理绘画并按下按钮,它会为 Graphics 对象引发 ObjectDisposedException。有什么办法可以防止这种情况吗?我在考虑 try{}catch 或更改一个布尔值来告诉绘画过程在退出之前停止,但我想知道是否有其他解决方案。
javascript - Javascript绘图库?
对 JavaScript 交互式绘图库有什么建议吗?只需要绘制不同颜色的线条、多边形、文本。IE/Firefox/Opera/Safari 兼容。
graphics - 如何测试线段是否与二维中的轴对齐矩形相交?
如何测试线段是否与二维中的轴对齐矩形相交?该段由其两端定义:p1,p2。矩形由左上角和右下角点定义。
opengl - AMD 64 位双核优化
我们有一个图形密集型应用程序,它似乎在 AMD 64 位双核平台上遇到问题,而在 Intel 平台上并不明显。
运行应用程序会导致 CPU 以 100% 运行,尤其是在使用阴影和照明代码 (Open GL) 时。
有谁知道 AMD 处理器的具体问题可能导致此问题,或者知道在哪里追查问题,和/或优化代码库以避免这些问题的方法?
请注意,该应用程序通常在中档硬件上运行良好,我的开发机器有一个 nvidia gtx260 卡,所以电源不足应该不是问题
algorithm - 在图像中混合渐变填充角的算法
我需要在图像周围放置一个 alpha 混合渐变边框。我的问题是混合角落,使它们在水平和垂直渐变相遇的地方平滑。我相信有一个标准算法可以解决这个问题。我想我什至多年前在学校遇到过它。但是我在几次网络搜索中都没有找到对其中之一的任何引用。
(我已经在角落实现了径向填充图案,但过渡仍然不够平滑。)
我的问题:
如果有解决这个问题的标准算法,它的名称是什么,更好的是,它是如何实现的?
放弃任何标准算法,确定所需像素值以在角落产生平滑渐变的最佳方法是什么?(从垂直渐变平滑过渡到水平渐变。)
编辑:所以想象我有一个图像,我将插入一个更大的图像之上。较大的图像是纯黑色,较小的图像是纯白色。在我插入之前,我想通过在较小的图像上设置 alpha 值来将较小的图像混合到较大的图像中,以在它周围创建一个透明的“边框”,使其“淡入”到较大的图像中。做得正确,我应该有一个从黑色到白色的平滑渐变,除了角落和内边缘外,我在任何地方都这样做。
在靠近图像中心的渐变边框边缘,该值将是 255(不透明)。当边界接近外边缘时,alpha 值接近 0。在图像的垂直和水平边界相交的角落,你最终会得到一条对角线。我想消除那条线并平稳过渡。
我需要的是一种算法,该算法确定水平和垂直边缘相遇时在图像角落重叠的每个像素的 alpha 值(0 - 255)。