如何将数学曲线变为机器人轨迹-花式show爱心代码-turtlesim篇

news/2025/2/12 4:17:58/

 


第一步:找到曲线数学描述的网址。

阅读后了解曲线所对应的x+y函数。

不要选太复杂的,毕竟先复现出来最重要的。

 

第二步,这个函数转为C++代码。

    //Lovegoal_x=5.5+4.0*pow(sin(curve_t/200.0),3);goal_y=5.5+((13.0*cos(curve_t/200.0)-5.0*cos(curve_t/100.0)-2.0*cos(3.0*curve_t/200.0)-cos(curve_t/50.0))/4.0);

 

代码解释:

数值:5.5。对应如下

[ INFO] [1671081347.479062900]: Spawning turtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]  

 

公式中的:t,代码中对应curve_t/200.0。

连续时间函数t,转为计算机离散的量,仅此而已。

公式中所绘制心形太大,代码中按比例缩小到25%。

完成后,需要将代码编译。

第三步,修改CMakelist:

add_executable(love tutorials/love.cpp)
target_link_libraries(love ${catkin_LIBRARIES})
add_dependencies(love turtlesim_gencpp)

 使用catkin_make:

Scanning dependencies of target love                                                                                    Building CXX object turtlesim/CMakeFiles/love.dir/tutorials/love.cpp.obj                                         love.cpp                                                                                                                Linking CXX executable D:\ros1\cocube\devel\lib\turtlesim\love.exe 

第四步,测试:

如果出现卡顿,重启全部。

 

同样,换一个数学模型,就可以绘制更多的轨迹。 

如果觉得心形绘制不够美丽,修改参数或者函数可以获得更多类型,总有一款适合。

 


视频全程录制:

如何将数学曲线变为机器人轨迹-花式show爱心代码-

 


 

 

有许多数学曲线可以产生心形,其中一些在上面进行了说明。“第零”曲线是由极性方程给出的旋转心形(其名称的意思是“心形”)



通过取心脏表面的y=0横截面并将z坐标重新标记为y,得到第一条心脏曲线,给出6阶代数方程



第二条心脏曲线由参数方程给出

 
其中t在[-1,1]中(H.Dascanio,pers.comm.,2003年6月21日)。
第三条心脏曲线由下式给出

 
(P.Kuriscak,个人通讯,2006年2月12日)。该心脏曲线的每一半是6阶代数曲线的一部分。
HeartCurve5

 

第四条曲线是极曲线


由于匿名来源,2010年2月初从Wolfram|Alpha的日志文件中获得。该心脏曲线的每一半是12阶代数曲线的一部分,因此整个曲线是24阶代数曲线。
第五心脏曲线可以参数化地定义为


第六条心脏曲线由以下简单表达式给出

 
(由J.Schroeder于2021 10月16日在贺卡上注明)。当用比例参数a和b适当地进行无量纲化时,曲线变为

 
它可以写成x和y中的六分方程。
这些心脏的区域是

 
其中A_4可以作为超几何函数、反切线和伽马函数的复杂组合以封闭形式给出。

 

邦尼投影
Bonne投影是一种将球体表面映射到心形区域的地图投影,如上图所示。


♥心形曲线:

mathworld.wolfram.com/HeartCurve.html

扩展阅读:

优美的曲线(含蝴蝶线)-CoCube



http://www.ppmy.cn/news/3713.html

相关文章

Qt5 中的 Json 模块与 JsonCpp 的对比

注:大家常说的 QJson 其实并不是 Qt 中的模块,而是在 Qt4 没有 Json 模块的年代,一个非官方的第三方模块。对于现在 Qt 中的 Json 模块,官方称之为 Qt Json。 其实 Qt5 中的 Qt Json 模块的代码,写的可以说是严格按照…

springMVC+mysql实现的Java web图书管理系统源码+运行教程+参考论文

今天给大家演示的是一款由srpingMVC实现的Java web图书管理系统,本项目功能非常丰富,且附带配套论文及视频指导配置运行教程,系统实现的功能主要有:图书馆里、图书分类管理、出版社管理、图表图书统计展示、用户管理、角色管理、权…

win7无损合并分区,win7合并磁盘分区

电脑的操作系统是win7的,如果磁盘分区太小或者说磁盘分区不合理,需要对磁盘分区重新分区,其中合并磁盘分区就是解决方法之一,那么,有没有关于win7无损合并分区的操作方法呢? 一、利用Windows自带的功能来合…

SSM整合

SSM整合 1、准备工作 ①创建Maven Module ②导入依赖 <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.c…

记录-链表头插尾插区别

链表作为数据结构中比较重要的一种&#xff0c;具有操作效率高、内存利用率高、结构简单、使用方便等特点&#xff0c;今天我们一起交流一下单向线性表的头插法和尾插法的区别及优缺点 线性表因为每个元素都包含一个指向下一元素的指针&#xff0c;所以新增、删除、修改起来非…

Jenkins Pipeline Kubernetes 如何创建 Pod

Jenkins Pipeline & Kubernetes 如何创建 pod 文章目录Jenkins Pipeline & Kubernetes 如何创建 pod1. 前言2. Jenkins 插件2.1 安装 Kubernets Plugin2.2 安装 Docker Plugin2.3 安装 Git Plugin3. Jenkins 配置 kubernetes credentials4. Jenkins 连接 minikube 集群…

android 和风图标字体移植显示墨迹天气图标

android studio版本&#xff1a;21.2.1 例程&#xff1a;newareaautov1 和风天气字体图标使用方法见&#xff1a; android 显示和风天气字体图标_kim5659的博客-CSDN博客_qweather-icons 之前做了个全自动获取天气的app,用的是墨迹的接口&#xff08;实际是科大讯飞再接入墨…

2022-12-15 c++总结

文章目录c学习之路&#xff08;总结篇&#xff09;持续更新基本概念理解关于.h .hpp .cpp的理解namespace和#ifdef的理解封装成dll和lib区别stdafx.h和stdafx.cpp全局变量global和静态变量static区别main函数的参数argc&#xff0c;argv类型含义理解符号变量const和define枚举类…