首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有一种方法可以在给定N作为输入的情况下,在不进行分割和不触发的情况下生成正则N多边形的角点

有没有一种方法可以在给定N作为输入的情况下,在不进行分割和不触发的情况下生成正则N多边形的角点
EN

Stack Overflow用户
提问于 2020-07-19 07:54:55
回答 1查看 116关注 0票数 0

编辑:我找到了一个与栅格化梯形https://cse.taylor.edu/~btoll/s99/424/res/ucdavis/GraphicsNotes/Rasterizing-Polygons/Rasterizing-Polygons.html相关的页面,但我仍然在尝试是否可以只做边缘

我正在尝试为任意N边形的角点生成点。其中N是非零正整数。但我正试图在不需要除法和trig的情况下有效地做到这一点。我在想,可能有某种Bresenham类型的算法可以解决这个问题,但我似乎找不到任何东西。

我在stackoverflow上唯一能找到的就是这个,但是内部角度增量是通过使用2*π/N: stackoverflow找到的。

下面是C语言页面中的算法

代码语言:javascript
复制
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);
}

那么,有没有可能在没有任何分歧的情况下这样做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-19 12:42:39

除了为所有有用的N值预先计算它们之外,没有任何解决方案可以避免调用sincos。但是,您只需要计算一次,而不管N是什么。(假设您知道多边形的中心在哪里。您可能需要进行第二次计算才能计算出中心的坐标。)每个顶点都可以使用相同的旋转矩阵从前一个顶点计算出来。

预计算值的查找表不是不合理的解决方案,因为在某个足够大的N值上,多边形变得无法与圆区分开来。因此,您可能只需要几百个值的查找表。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62974883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档