编辑:我找到了一个与栅格化梯形https://cse.taylor.edu/~btoll/s99/424/res/ucdavis/GraphicsNotes/Rasterizing-Polygons/Rasterizing-Polygons.html相关的页面,但我仍然在尝试是否可以只做边缘
我正在尝试为任意N边形的角点生成点。其中N是非零正整数。但我正试图在不需要除法和trig的情况下有效地做到这一点。我在想,可能有某种Bresenham类型的算法可以解决这个问题,但我似乎找不到任何东西。
我在stackoverflow上唯一能找到的就是这个,但是内部角度增量是通过使用2*π/N: stackoverflow找到的。
下面是C语言页面中的算法
float angle_increment = 2*PI / n_sides;
for(int i = 0; i < n_sides; ++i)
{
float x = x_centre + radius * cos(i*angle_increment +start_angle);
float y = y_centre + radius * sin(i*angle_increment +start_angle);
}那么,有没有可能在没有任何分歧的情况下这样做呢?
发布于 2020-07-19 12:42:39
除了为所有有用的N值预先计算它们之外,没有任何解决方案可以避免调用sin和cos。但是,您只需要计算一次,而不管N是什么。(假设您知道多边形的中心在哪里。您可能需要进行第二次计算才能计算出中心的坐标。)每个顶点都可以使用相同的旋转矩阵从前一个顶点计算出来。
预计算值的查找表不是不合理的解决方案,因为在某个足够大的N值上,多边形变得无法与圆区分开来。因此,您可能只需要几百个值的查找表。
https://stackoverflow.com/questions/62974883
复制相似问题