【问题标题】:Is there a general method of drawing 2d objects on a digital screen是否有在数字屏幕上绘制 2d 对象的一般方法
【发布时间】:2016-11-25 01:02:20
【问题描述】:

在某些情况下,我想通过定义一组像素来绘制 2D 对象以更改为代表形状的颜色。例如,如果我想画一个正方形,我会定义一个左上角(0,0)和一个右下角(10,10)。然后我会用 y 值 0-10 更改所有像素 x 值 0-10 的颜色。

不幸的是,我没有可靠的分步方法来完成此操作,并且由于它们非常简单,我只能绘制正方形/矩形。

有没有可以描述的方法,或者描述如何做到这一点的资源,你可以指点我,这将帮助我绘制除正方形和矩形以外的形状?

伪代码,或在 C 或 java 中的基本实现将非常有帮助。此外,仅详细描述如何实现这一点也将有所帮助。

【问题讨论】:

  • 除了正方形和长方形之外,还有无数种形状。你问的是圈子吗?省略号? N边?圆角矩形?明星?其他形状?你是 CS 和物理专业的二年级学生……你是怎么熬过高中几何课的?无论如何,这个问题对于 SO 来说太宽泛了。
  • 那么...您是在问如何将浮点数舍入为整数?或者也许是超级采样和抗锯齿?
  • 大多数工程 (CAD) 或其他严肃的应用程序 - 甚至游戏和 3D - 将世界模型保持在某种真实空间坐标系中(即:由浮点坐标表示的连续欧几里得空间)。只有在最后的渲染步骤中,那些坐标才会映射到 2D 画布(并转换为整数)。然后应用某种抗锯齿算法来平滑由光栅化过程创建的硬边界。这些都是非常广泛的话题,无法在此处回答。
  • 我之前实际上已经阅读过那篇文章,但我想可能使用的一种方法是计算某些节点的位置。然后在每个节点之间画一个直向量。例如一个圆圈,您可以使用 numberOfNodes = (4)*2^n 计算节点数,其中 n 代表您想要的准确度级别。然后使用 (h-r/n, k-r/n) 计算每个节点的位置,+- 符号会根据您所在的象限而变化。h=center x coord,k=center y coord。此外,您需要使用 (h+-r, k+-r) 作为象限之间的过渡点。每个 r 只影响 1

标签: java c geometry shapes pixels


【解决方案1】:

就像 J... 说有很多要介绍的内容,但我确实喜欢您在 cmets 中描述的方法。我认为使用您描述的方法的最大挑战是在节点之间创建向量。您可以用来绘制矢量的解决方案是错开像素以产生直线的错觉。此外,随着 n 值的增加,形状会变得不那么锯齿。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    • 2012-05-03
    • 1970-01-01
    相关资源
    最近更新 更多