Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 为低分辨率矢量图形创建编辑器_Algorithm_Language Agnostic_Computational Geometry_Vector Graphics_Rasterizing - Fatal编程技术网

Algorithm 为低分辨率矢量图形创建编辑器

Algorithm 为低分辨率矢量图形创建编辑器,algorithm,language-agnostic,computational-geometry,vector-graphics,rasterizing,Algorithm,Language Agnostic,Computational Geometry,Vector Graphics,Rasterizing,目标是使用线段创建微小的256x256像素矢量图形,每个坐标只需要一个字节,因此每个线段总共32位。其动机是创建游戏地图并使用线段进行碰撞检测。通过将地图分成256x256块,我们可以很容易地确定哪些线段足够接近,可以作为碰撞的候选线段 由于我们不打算以大于256x256的速度显示这些矢量图形,并且我们从线段的减少而不是增加中获益,因此我们希望消除渲染时不可见的线段。如果光栅化时两条线段的距离如此之近,以至于它们的像素重叠,那么我们希望以某种方式检测这种情况,并将线段的重叠部分合并在一起 例如,

目标是使用线段创建微小的256x256像素矢量图形,每个坐标只需要一个字节,因此每个线段总共32位。其动机是创建游戏地图并使用线段进行碰撞检测。通过将地图分成256x256块,我们可以很容易地确定哪些线段足够接近,可以作为碰撞的候选线段

由于我们不打算以大于256x256的速度显示这些矢量图形,并且我们从线段的减少而不是增加中获益,因此我们希望消除渲染时不可见的线段。如果光栅化时两条线段的距离如此之近,以至于它们的像素重叠,那么我们希望以某种方式检测这种情况,并将线段的重叠部分合并在一起

例如,如果多边形的一个角太尖锐,无法在256x256中正确表示,那么我们应该自动切断该角

找到检测两条线段之间距离的算法很容易,但这并不是我们要做的。分段之间没有特定的最小距离;问题在于检测两个线段何时位于同一像素上,并将它们合并在一起,而不会严重影响图形其余部分的外观


有没有什么技巧可以把这从一个笨拙复杂的计算几何问题变成一个简单的问题

您知道Bresenham吗?创建一个初始化为零的256x256整数数组,并将line ID>0写入该数组,就像绘制线条时将位写入256x256像素数组一样。如果您将要在中写入id,并且内容已经存在!=0则有两行的ID,它们写入相同的像素。