问题标签 [clipping]

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 投票
3 回答
8291 浏览

opengl - 如何检查对象是否位于 OpenGL 的裁剪体积之外?

我真的对 OpenGL 的模型视图转换感到困惑。我了解所有的转换过程,但是当涉及到投影矩阵时,我迷路了:(

如果我有一个点 P (x, y, z),我如何检查该点是否将绘制在由平行裁剪体积或透视裁剪体积定义的裁剪体积上?这个过程背后的数学背景是什么?

0 投票
3 回答
16077 浏览

php - Safari 内嵌 SVG 文档类型

我创建了一个使用 raphaeljs 库绘制各种 SVG 元素的页面,但我在 Safari 中遇到了一些问题。

我正在绘制图像并使用剪切路径来掩盖某些区域。然后,用户可以单击“通过”这些图像到放置在后面的其他图像。

这在 Firefox 和 chrome 甚至 IE 中都可以正常工作。但在 Safari 中,我无法单击图像。剪切路径似乎在 Safari 中不起作用。

我通过这个问题发现,Safari 的内容类型必须设置为“application/xhtml+xml”,因为它没有使用 html5 解析器。

我已经尝试过将其放在页面顶部的建议...

...但浏览器只输出 html 文件。

我只是想知道我需要什么 doctype 才能使 safari draw 正确嵌入 SVG,比如 chrome 和 firefox?

这就是我绘制 SVG 图像的方式,它在 chrome 和 firefox 中运行良好

0 投票
2 回答
5743 浏览

opengl - gl_Position 的 Zbuffer 规则

这是我对opengl的设置,以防它们很重要:

有一段时间我认为剪裁平面将适用于 gl_Position.z 在 -1 到 1 之外的任何东西。但即使我在着色器中强制 gl_Position.z 为常数:

仍然存在基于 gl_Position.w 的正确 z 缓冲和裁剪!那么规则是什么?

0 投票
1 回答
614 浏览

android - Android 使用剪切路径(或任何其他方法)将位图的一部分叠加到另一个位图之上

Android 2.1 或更高版本

假设我有两张相同大小的图像,一张是甜甜圈形状,在甜甜圈的中间和外侧都是透明的。

另一个是与甜甜圈大小相同的方形图像

如果它们被覆盖,它们看起来像这样(甜甜圈实际上是不可见的,因为正方形将位于 Z 堆栈的顶部)

图1

我想做的是创建一个剪切路径或任何方法,以使用开始和停止角度(会随着时间而变化)真正显示落在甜甜圈内的方形位图部分

因此,例如显示甜甜圈内部的蓝色正方形部分,从 0 度开始到 40 度结束,以及 180 度和 270 度。这会产生这样的东西。

甚至不知道从哪里开始,有人有什么想法吗?

图 2

0 投票
4 回答
1181 浏览

iphone - UIButton + 斜体字体 = 剪裁

问题是当我使用像 Helvetica Oblique 这样大小大于 13 的斜体字体时,UIButton 剪辑标题尾部(最后大约 1-2 像素)。有人知道这个问题的解决方案吗?

0 投票
0 回答
2544 浏览

c# - LiangBarsky算法c#的线剪裁

我有一个用 c# 实现的 Liang Barsky 算法,但有一些问题,因为它有时会返回矩形边界之外的点,就像在这种情况下:

p1=(516,546) 和 p2=(0,0) R=0;L=511;T=511;B=0;

还有我怎么能表明这条线完全在矩形之外

  • 我将算法翻译成以前的代码,所以我可能会错过一些概念
0 投票
2 回答
890 浏览

html - 在没有画布元素的 HTML 中剪辑 DIV

我正在研究 HTML+Javascript 页面翻转效果。我希望在没有 HTML5 Canvas 元素的情况下完成此操作,以便我可以将其与文本/表单等一起使用。

到目前为止,这是我一起破解的(webkit 浏览器,我使用 chrome 12): JSFIDDLE: Page Flip

预习:

重叠区域是要显示的区域

我想要做的不是显示蓝色矩形之外的红色矩形区域。我的问题在于重叠区域(紫色区域)的 MASKING / CLIPPING。我试图将页面(红色)div嵌入到掩码(蓝色)div中并设置overflow : hidden ,但问题是每当掩码(蓝色)旋转时,页面(红色)也会旋转,并且计算无法通​​过偏移进行校正.

还有其他方法可以剪辑这个区域吗?

0 投票
1 回答
3226 浏览

ios - iOS:从 UIBezierPath 创建图像剪切路径

我正在创建一个允许用户剪切图像的一部分的应用程序。为了做到这一点,他们将创建一堆 UIBezierPaths 来形成剪切路径。我目前的设置如下:

  • UIImageView 显示他们正在剪切的图像。
  • 在该 UIImageView 之上是 UIImageView 的自定义子类,它执行自定义 drawRect: 显示/更新用户正在添加的 UIBezierPaths 的方法。
  • 当用户单击“完成”按钮时,将创建一个新的 UIBezierPath 对象,该对象通过遍历存储在其中的数组并调用 appendPath: 来合并用户创建的所有单独路径。这个新的 UIBezierPath 然后关闭它的路径。

这就是我所得到的。我知道 UIBezierPath 有一个 addClip 方法,但我无法从文档中弄清楚如何使用它。

一般来说,我看到的所有裁剪示例都直接使用 Core Graphics 而不是 UIBezierPath 包装器。我意识到 UIBezierPath 有一个 CGPath 属性。那么我应该在剪辑时使用它而不是完整的 UIBezierPath 对象吗?

0 投票
2 回答
3154 浏览

java - 如何摆脱 OpenGL 中的 z-fighting 问题?

我正在编写一个飞行模拟器,但遇到了这种类型的经典问题:视锥体的近平面必须足够近才能使飞机驾驶舱可见,远平面必须很远才能使可见距离达到40公里。

可见距离或近/远比确实超出了opengl的z-buffer精度能力,远处物体闪烁剧烈。这是一个花哨的 3d 引擎让您独自解决问题的地方,您需要真正了解 opengl :)。可能我找到了解决问题的正确方法(如果我错了,OpenGL 专家会纠正我),但我的解决方案错过了重要的一点。改变的渲染器执行双通道渲染:

  1. 在第一遍中,必须显示远处的物体和背景,近平面移开,z-buffer 是快乐的,地形看起来不错,但近处的物体被剪掉了。
  2. 在第二遍中,投影矩阵针对近距离物体进行了调整,应该显示驾驶舱。

未解决的问题:在第二遍中,所有远处的物体和背景都是不可见的,因此我在它后面有驾驶舱和黑色背景。第二遍的结果完全浪费了第一遍的结果。尔格计划的覆盖不会发生。问题:如何强制 opengl 在第二遍中忽略背景颜色,以便两个遍结果都创建所需的叠加层?

PS这是现状的图像(近/远平面处于极端状态,以使所有细节可见,单程无需投影调整)。

http://www.flickr.com/photos/43342833@N04/5995604542/sizes/l/in/photostream/

缓冲区清除在每个渲染周期仅发生一次,并且在两次传递之间不涉及。这里是清除代码:

您描述的方法也用于2次pass:1.“长距离”投影和地形2.“短距离”和驾驶舱之间没有清除,但是第二次通过后驾驶舱后面的背景是黑色的。也许 glDepthRange 功能有帮助,必须检查手册。

zbuffer 深度为 24 位。

0 投票
2 回答
2259 浏览

opengl - 为什么 OpenGL 不从我的几何着色器中裁剪部分位于查看体积之外的图元?

http://www.opengl.org/wiki/Rendering_Pipeline_Overview说在几何着色器运行之后和片段被光栅化之前,“位于观察体内部和外部之间边界上的图元被分成几个图元”。我读过的关于 OpenGL 的所有其他内容也以同样的方式描述了裁剪过程。但是,通过将片段着色器中的 gl_FragDepth 设置为比生成它的三角形上的点的实际深度更接近相机的值(以便片段通过深度测试,而如果我复制固定 -管道功能),我发现即使它部分与远视平面重叠,也会为整个原始三角形生成片段。另一方面,如果所有顶点都在平面后面,

这里发生了什么?我的几何着色器是否替换了一些默认功能?是否有我需要设置的标志/提示或需要写入的其他内置变量,以便渲染管道的下一步知道如何进行部分剪辑?

我在 NVIDIA GeForce 9400M 上使用带有 GL_EXT_geometry_shader4 扩展的 GLSL 1.2 版。