问题标签 [2d]

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.

0 投票
11 回答
27743 浏览

algorithm - 平行四边形内的随机点

我有一个由 2D 中的 4 个点定义的 4 侧凸多边形,我希望能够在其中生成随机点。

如果它真的简化了问题,我可以将多边形限制为平行四边形,但更一般的答案是首选。

生成随机点直到一个点位于多边形内是行不通的,因为它所花费的时间真的无法预测。

0 投票
6 回答
188410 浏览

language-agnostic - 计算二维向量的叉积

来自维基百科:

叉积是在三维欧几里得空间中对两个向量进行二元运算,产生另一个向量,该向量垂直于包含两个输入向量的平面。

鉴于定义仅在三个(或七个、一和零)维度中定义,如何计算两个二维向量的叉积?

我见过两种实现。一个返回一个新向量(但只接受一个向量),另一个返回一个标量(但是是两个向量之间的计算)。

实现 1(返回一个标量):

实现 2(返回一个向量):

为什么不同的实现?我将使用标量实现做什么?我将向量实现用于什么?

我问的原因是因为我自己正在编写一个 Vector2D 类并且不知道使用哪种方法。

0 投票
3 回答
901 浏览

java - 在 Java 中加速 2D 图像 *不*干扰 JMenus

已经实现的性能提升器: - 获取 GraphicsConfiguration 的兼容图像以进行绘制 - 在 1.5 中启用 OpenGL 管道:由于严重的伪影而无法实现

到目前为止,我很好,该程序的主要异形瓶颈是绘制具有数千个图块的图像。不幸的是它不规则,否则我可以简单地设置像素并缩放它们。我使用 VolatileImages 和自己的渲染例程来加速图像(忽略重绘并使用计时器自行绘制)。结果令人愉悦并且就足够了,但是:选择一个通常悬停在图像部分上方的 JMenu 会受到严重干扰,因为 JMenu 被透支了。不可接受,布局无法更改。

我尝试了 JOGL 的 GLJPanel,但没有明显的性能提升。那么是否有可能使用 VolatileImages(或其他加速相关的轻量级组件,如 GLCanvas)并且仍然获得正常的 JMenu 显示,如果是,如何?

0 投票
1 回答
2696 浏览

graphics - 如何制作Photoshop中风效果?

我正在寻找一种以编程方式重新创建以下效果的方法:

给出输入图像:
输入 http://www.shiny.co.il/shooshx/ConeCarv/q_input.png

我想迭代地应用“中风”效果。
第一步看起来像这样:
第 1 步 http://www.shiny.co.il/shooshx/ConeCarv/q_step1.png

第二步是这样的:
alt text http://www.shiny.co.il/shooshx/ConeCarv/q_step2.png

等等。

我认为这将涉及某种边缘检测,然后以某种方式跟踪边缘。
是否有一种已知的算法可以有效且稳健地执行此操作?

0 投票
5 回答
4505 浏览

geometry - 如何将由小正方形组成的区域划分为更大的矩形?

我会去哪里寻找将 0 或 1 的二维网格值作为输入的算法,然后在其中识别所有可能的非重叠矩形?

在更实际的解释中:我正在绘制一个由多个正方形表示的网格,并且我希望找到一种方法将尽可能多的相邻正方形组合成矩形,以减少骑自行车所花费的时间每个正方形并绘制它。

不需要最高效率,速度更重要。

附录:显然我正在寻找的似乎是一种称为 Tesselation 的技术。现在我只需要为这个具体案例找到一个好的描述。

附录2:“1”方格的边界将是不规则的,在某些情况下甚至没有连接,因为“1”方格的分布将是完全随机的。我需要识别这些不规则的形状并将其分成规则的矩形。

正确答案:为了在速度和效率之间取得最佳平衡,最好使用网格数据来填充四叉树,每个节点的状态值为空/部分填充/填充。

0 投票
1 回答
518 浏览

3d - gpu, old hardware, 3d acceleration and a lib

i am writing a 2d lib which will have 3d acceleration but i'd like to do it in a way that it will efficiently run on older HW. Possibly typedefs to hide options/functions that your targeted mode does not support. (also there may be emulation func turned on)

What are some of the things older HW do? here is a list of questions and things i know of.

  • Tiles, this will be unsupported. Its to old, my lib will support pixel access
  • Single pixel buffer with scrolling. Example GBA
  • multiple surface with surface to surface quick blt (no stretch)
  • multiple surface with surface to surface quick blt with stretch (maybe this was emulated? does any HW stretch images for you?)
  • HW pixel fill (i thought i saw the option in DX)
  • HW transparent colour? (colour which is transparent, thought i seen in DX specs)
  • Textures, older use to be a power of 2. The width does not have to be the same power of 2 as height? (example 64x256), does any require them to be the same
  • Textures, newer HW can have them any width and height (or is this a lie?)
  • Textures can be in crazy formats (ARGB 8888, ABGR 8888, ABGR 2 10 10 10)

Also, i cannot do a texture to texture blit? as in copy 60x40 from texture A to B in HW ? Also can textures be in palette? (i wont support this) and finally i should keep in mind about shaders 8)

What else am i missing?

0 投票
4 回答
6309 浏览

java - 在 Java 中读取精灵表的最佳方法是什么?

我正在编写一个基本的 sprite 引擎,以供自己娱乐并更好地熟悉 Java 的 2d API。目前,我正在使用大量具有透明背景的单独 .png 文件来表示我需要的各种精灵和不同的动画帧。大多数“现实世界”游戏开发项目似乎都在使用“精灵表”,其中在单个文件中包含多个精灵或动画帧。此外,人们通常不使用原生图像透明度支持,而是将精灵调色板中没有出现的任意颜色指定为透明颜色。如何以编程方式管理这样的文件?

  • 你怎么知道一个精灵从哪里开始,下一个从哪里开始
  • 你如何处理透明度

可能还有其他我没有想到的因素,所以我可能会在我想到事情或人们提出建议时添加到上面的列表中(请在评论中这样做)。

0 投票
9 回答
7189 浏览

performance - 快速找到图像中最近的非黑色像素

我有一个随机且稀疏地散布着像素的 2D 图像。
给定图像上的一个点,我需要找到到不在背景颜色(黑色)中的最近像素的距离。
最快的方法是什么?

我能想出的唯一方法是为像素构建一个 kd-tree。但我真的很想避免如此昂贵的预处理。此外,似乎 kd-tree 给了我比我需要的更多。我只需要与某物的距离,我不在乎这东西是什么。

0 投票
1 回答
2814 浏览

opengl-es - 使用 OpenGL 的 2D 游戏中的 3D 效果

我正在使用 OpenGL ES 开发 2D 游戏。我正在使用正交投影,因为它使 2D 的东西变得容易。现在我想创建一个简单的 3D 效果,比如围绕 Y 轴旋转一个精灵(类似于封面流)。如果我理解正确,这不能在正射投影中完成。是否可以在不弄乱其余代码的情况下做到这一点?就像在帧中间切换投影,把当前帧图像当作背景,在背景之上绘制3D的东西?

0 投票
3 回答
1671 浏览

graphics - 适用于 Windows Mobile 的最佳 2D 图形库是什么?

标题不言自明......我试图找到另一个类似的问题,但如果它存在,一定错过了。我正在寻找任何东西,从替换 GAPI 的核心库到 .net 包装器......它用于构建一个漂亮的 UI,因此不需要 3D......