gpt4 book ai didi

c++ - 在围绕一个点的圆圈中创建对象

转载 作者:行者123 更新时间:2023-11-27 23:23:53 24 4
gpt4 key购买 nike

我需要围绕空间中的引用点创建一圈规则间隔的门。程序每次运行时,圆圈中都会有不同数量的项目,因此它会自动重新缩放以适应增加的项目数量。我知道这更像是一个数学问题而不是编程问题,但我很难过!以下代码与我得到的最接近:

block->setPosition(core::vector3df(sin(segdeg*itemnumber)*radius+referencepoint.X,
0,
cos(segdeg*itemnumber)*radius+referencepoint.Z));

block 是对象,此代码针对每个项目运行。segdeg 是 360/项目数。也就是说,SEGment DEGrees。半径是项目需要离中心点多远。Itemnumber 是相关项目的索引 - 它是哪个编号的项目。

出于某种原因,此代码使每扇门都非常接近,但仍相差大约 10-15 度。 (虽然第一扇门总是在正确的位置)但是这些元素都离中心点有正确的距离。我确定这是一个非常明显的已回答问题,但我几个小时都没能解决它,我已经用谷歌搜索了。

谁能修正我的算法?

最佳答案

sincos以弧度而不是度数作为参数。你要segrad = 2 * pi / the_number_of_items (段弧度)而不是 segdeg = 360.0 / the_number_of_items (段度数)。

您的实现可能会提供 pi 的值,但标准中没有,因此您可能必须使用 boost::math::constants::pi<double>()或放入您自己的。

您的第一项是正确的,因为 0 在任何度量中都是 0。

关于c++ - 在围绕一个点的圆圈中创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10782890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com