草庐IT

四元组

全部标签

c++ - 从陀螺仪+加速度计数据计算四元数

我在每个时间段T都有陀螺仪+加速度计数据。使用C++,我想每次都计算对象的旋转-它可以在其轴上旋转。我读过用四元数(而不是欧拉角)来表示系统的旋转很方便。如何从角速度(从陀螺仪)转换为四元数表示?我认为为了做到这一点,我需要使用数值方法求解微分方程。 最佳答案 我不确定您要查找哪种语言,但C++Boost库有一个可用的Quaternionclass(quaternion.hpp)。我使用这个库创建了一个简单的旋转类,用于计算结果或围绕任意vector旋转点,难度很小。更新:根据您的评论,我认为您不一定需要使用四元数库来计算给定时间的

c++ - 查找元组元素的最大值 C++

我想知道是否有一种简洁的方法可以找到元组vector中其中一个元素的最大值。例如对于以下内容,假设我想在元组vector中找到元组的第二大值。vector>foo={{12,1},{12,5},{5,6}};结果应该是6。我可以这样做的一种方法是:vectorallFoo;for(inti=0;i!=size(foo);i++){allFoo.emplace_back(get(foo[i]));}doublemaxVal=*max_element(allFoo.begin(),allFoo.end());不过我觉得,因为您实际上是在对事物进行两次迭代,所以这可以更简单地完成吗?我的元组

c++ - boost 元组的排序双端队列

不确定我是否在某处有一个简单的拼写错误,但我在对元组的双端队列进行排序时遇到了问题。所以,我的双端队列看起来像这样:std::deque>messages;然后我有电话要排序:sort(messages.begin(),messages.end(),msg_sort_criteria);还有我的排序函数:boolmsg_sort_criteria(boost::tuplelhs,boost::tuplerhs){returnboost::get(lhs)(rhs);}我在STL_heap.h和STL_algo.h中遇到错误。例如,Calledobjecttype''isnotafunc

c++ - 如何将值输出到 C++11 中的流元组

我正在尝试编写流运算符可以输出到std::tuple流而不是一个流。所以基本上,我正在尝试编写Unixtee在C++中命令,然后执行:std::tie(std::cout,std::clog)我尝试在C++11中使用可变参数模板编程递归地编写流运算符。到目前为止,我所拥有的是下面的代码。但是代码无法编译,并且错误消息很长。我的问题是,如何修复代码以使其正常工作?使用g++-std=c++11编译的第一条错误消息(gcc-4.8.1)是:test.cpp:24:33:error:nomatchfor'operator>&,std::basic_ostream>&>'and'int')st

C++如何生成n维元组的笛卡尔积集

我希望生成一些数据来表示代表n维n立方体的点云的坐标。这些点应该均匀分布在整个n空间,并且应该能够以用户定义的间距生成。此数据将存储在一个数组中。 最佳答案 我找到了一个cartesianproductusingBoost.MPL的实现.Boost中也有一个实际的笛卡尔积,但那是一个预处理器指令,我认为它对您没有用。 关于C++如何生成n维元组的笛卡尔积集,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

c++ - 使用可变参数模板制作类似元组的编译时 "linked-list"

我在考虑std::tuple的可能实现方式(以及任何类似的模板类,在编译时定义了可变数量的“成员”),我认为也许可以创建一个类似于链表的“递归类型”。我尝试编译以下测试用例:templateclassTupleLite{public:FirstTypetype_;TupleLiteother_types_;};intmain(){TupleLitemytuple;}类本身编译没有错误,但实例化抛出错误wrongnumberoftemplatearguments(0,shouldbe1ormore).我相信这是因为TupleLite尝试实例化TupleLite,它试图实例化一个Tuple

c++ - 如何在 C++ (c++11/c++17) 中执行元组运算?

我正在尝试编写模板函数/运算符,例如+用于在相同类型的两个元组之间进行算术运算。例如,对于std::tuplet=std::make_tuple(1,2);我愿意做autot1=t+t;逻辑很简单:按元素进行算术运算。但我无法弄清楚如何在c++模板编程(c++11/17)中完成这项工作。我的以下代码无法使用g++-std=c++11tuple_arith.cpp进行编译.特别是,我想不出获取通用add的正确方法函数(templateTadd(Tx,Ty){returnx+y;})来处理元组操作代码。有人可以帮助解释如何解决这个问题吗?#includenamespacestd{templ

c++ - 可变参数模板和 Alexandrescu 元组实现

我试着学习一点关于模板元编程和目前我在玩可变参数模板。在他的演讲“VariadicTemplatesareFunadic”中,Alexandrescu介绍了一个小元组实现,我尝试构建并可能扩展一个一点。(我知道这是一个玩具示例,我只是尝试学习一点关于c++的更多信息)。但是,我对他的代码有一个小问题。这里是:templateclasstuple{};templatestructtuple_element;templatestructtuple_element>{typedefTtype;};templatestructtuple_element>{typedeftypenametupl

c++ - 获取函数参数类型作为元组

问题Givenanyfunction(orcallable)typeFunction,howcanIgetitsallargumentstypesasatupletype?例如,我需要一个特征function_traits::arguments,其中:intf();typenamefunction_traits::arguments//=>givesmestd::tuplevoidg(int);typenamefunction_traits::arguments//=>givesmestd::tuplevoidh(int,int);typenamefunction_traits::ar

c++ - 推导元组的类型

我有这样的代码:templateinlinetypename::std::enable_if{},T>::typeget(){//pulltuple'selementsfromsomewhere}为了推导出实例化元组的模板类型参数,我进行了以下转换:static_cast(nullptr)并将其作为参数传递给函数templatevoiddeduce_tuple(::std::tuple*const);我犯了UB罪吗?有没有更好的办法? 最佳答案 这里的不完美之处在于我们不能部分特化函数模板。你的方法很好,因为我们没有取消引用空指针;