【发布时间】: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