问题标签 [scanline]

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 投票
2 回答
482 浏览

c# - YUV 图像格式的扫描线

有人可以向我解释一下扫描线一般是什么意思,在 YUV 颜色格式中是什么意思?一些例子的一些解释会很棒。

谢谢作为

0 投票
2 回答
228 浏览

algorithm - 算法:创建最大高度的屋顶

我在一本书中发现了这个问题,并正在拼命地解决它。问题本身是:创建一个具有最大高度的屋顶(非平屋顶)。墙壁要么成 90 度角,要么平行。

我的方法:
我有所有的边缘点。所以我可以使用扫描线方法。我将在 x 轴上排序所有点,然后在 y 轴上排序。然后,我将遍历我的整个点列表,并在墙壁上画一条 45° 的线。我将检查是否有任何线与我已经绘制的当前线相交。如果没有匹配,我将转到下一个点并绘制另一条与墙壁成 45° 的线。现在最后两条线相交的机会很高,所以我将在相交点创建一个新点。
我的问题是会有很多特殊情况。有没有我没有想到的更简单的方法?还有其他更适合此类问题的算法吗?你对这类问题有什么想法?

示例:
这就是想象屋顶的样子。 屋顶

0 投票
2 回答
4071 浏览

delphi - Delphi TBitmap - 为什么像素和扫描线不同?

在使用 32 位 TBitmap 时,我从 Canvas.Pixels 切换到 ScanLine。

然后我将值设置为红色,却发现它显示为蓝色。

知道为什么吗?

这是一段代码摘录:

似乎不知何故 TColor 与内存中的内容不同,但这没有任何意义。

欢迎任何建议。;)

0 投票
1 回答
593 浏览

java - 扫描线:寻找交点

我想用扫描线算法填充一个多边形。为此,我必须知道扫描线与多边形接触的所有点。我为此写了一个循环,但它显然不起作用(它从不在列表中添加一个点,这意味着它找不到任何切割多边形的点)我可以创建一个多边形并从中获取所有边。

这是我的代码,用于获取与多边形相交的扫描线点 xmin、xmax、ymin 和 ymax 是多边形的最大点。他们也是正确的。contains() 使用 java.awt.Polygon 类检查 Point 是否在多边形内。这也有效。wasInside 包含一个布尔值,如果最后检查的点是否在多边形内,它会保存旧状态。

0 投票
1 回答
5754 浏览

java - 扫描线算法:如何计算交点

我必须从我们的教授那里实现一个扫描线算法,但我真的不明白我是如何从扫描线与多边形获得交点的。这是算法: 扫描线算法

我已经实现了自己的多边形(使用 等方法) paint()contains()并且我将多边形的所有边保存在这样的数组中:

我保存了 x 和 y 的最小值和最大值

0,ymin所以我的第一个想法是,如果下一个点在多边形内,我必须创建一个扫描线并检查一个循环。我这样实现了这个方法:

所以当下一个点在多边形内时,我有一个交点,依此类推。为此,我有这个循环:

但是我从我的 stackoverflow 问题中得到了一个提示,这不是正确的解决方案。

有人可以给我一个提示,我如何从教授那里开始实施算法?我在哪里获得 x1,y1,x2,y2,c 积分?我知道这些是边缘,但我怎么知道我必须采取哪些边缘?

编辑:好的,现在我所有的边缘都按它们的 y 值排序。我可以用给定的公式 Sx=x1+(x2-x1)/... 计算交点吗?我的第一次尝试是这样的:

但这似乎是错误的,因为我在intersectionPoints.

0 投票
1 回答
1636 浏览

delphi - 德尔福到拉撒路 - 扫描线

所以,我在 Delphi 中有遗留代码,我想在 Lazarus 中试用该代码。在进行一些更改后,在 Lazarus 中编译的代码我很高兴。但是,我遇到了一个我无法解决的问题。

原始的delphi代码从当前目录加载DICOM图像,将其转换为位图并显示出来。Delphi IDE 工作正常,但在 Lazarus 中图像完全黑暗。我确实将 Scanline 转换为“GetDataLineStart”和 TLazIntfImage。但仍然没有图像。下面是 Delphi 和 Lazarus 进行比较。拉撒路代码:

德尔福代码:

我想我已经粘贴了代码墙,但如果有人感兴趣,我认为可能负责的主要块是

另外,我试图在 Lazarus 调试期间创建一些文件:TempFile.bin 和 TempFile.bmp。在这里 TempFile.bin 似乎已被填充,但 TempFile.bmp 是一个深色图像。

0 投票
1 回答
782 浏览

image - 从 RGB32 和索引类型图像中获取图像颜色信息

我正在尝试访问 QImage 中的图像颜色。

我在文档中发现最多的方法是基于扫描线函数...

我试过了,它在 RGB32 图像上有效。当使用精确方法获取 8 位索引或单色图像的颜色数据时,我得到了令人惊讶且令人不快的结果。

这是我的代码:

使用 8 位索引或单色图像运行相同的代码,我在创建获取颜色时遇到错误。文档说扫描线与 32b 的倍数对齐 - 但由于这是 8 和 2 的倍数,我认为这不是问题。

一旦我发现我没有得到所有类型的输入图像的正确结果,我将其更改为

完美运行......我想知道它是否更慢或会有其他意外行为?毕竟,我使用 pixel() 函数——即使是在索引图像上——来获取颜色信息,实际上应该以不同的方式存储......这似乎应该失败......

有没有办法使用扫描线制作第一个版本,适用于其他图像类型?

为什么使用扫描线获取数据似乎是首选方法?

0 投票
1 回答
1360 浏览

c++ - c++ opengl扫描线算法

给定代码(取自C++ 中的扫描线填充 OpenGL/GLUT 算法):

re[500]le[500]数组是什么?为什么是500?

0 投票
0 回答
733 浏览

javascript - 实现扫描线算法

我正在尝试为给定 3 个点作为数组和颜色的随机三角形实现扫描线填充算法。我得到了一些奇怪的结果。请忽略代码的优化,我只是想让它工作,然后尝试优化它。我有一种使用 Bresenham 线算法绘制线条的方法。我无法弄清楚为什么我会得到这些结果。  http://postimg.org/image/qh1sdizwv/

0 投票
0 回答
2295 浏览

opengl - 如何在OpenGL中动态填充多边形中的颜色

我正在使用 glut 在 OpenGL 中创建一个程序,用户可以通过选择适当的选项并在屏幕上拖动鼠标左键在屏幕上绘制线条或圆圈。另外,我希望用户在单击鼠标右键时能够在多边形中填充颜色(可以通过几条线的组合绘制)。

我尝试通过使用 glReadPixels() 来实现洪水填充算法,以便递归地确定每个像素的颜色,但它太慢并且导致较大尺寸像素的堆栈溢出。

(最初我在单击鼠标右键以将 RGB 值存储在 3 个浮点元素的 backColor 数组中的位置执行此指令)

我实现的洪水填充代码是 -

那么,在鼠标右键单击时为多边形(可能是凹多边形)着色的最佳方法是什么?另外,使程序更高效的各种方法是什么?例如。将像素值存储为 GL_FLOAT 并为每个像素比较 3 个浮点数可能不是我觉得最有效的方式,但我不知道我们可以比较像素值的其他可能方式是什么。

最重要的是,最好的算法是什么?