当前位置: 首页 > news >正文

Unity场景内画车道线(根据五阶曲线系数)

        之前做过使用Dreamteck Splines插件构建车道线之前需求是给定车道线的点位,根据点位来进行构建。

        由于AI识别出来的点位不线性,画出来的车道线经常是歪七扭八,所以使用五阶曲线系数进行构建。

        使用在线图形计算器进行测试构建,公式为:

x=a+b*y+c*y^2-d*y^3+e*y^4

        我使用的测试系数为:

        a=1,b=0.01,c=0.005,d=0.0001,e=0

        代入后公式即为:

x=1+0.01y+0.005y^2-0.0001y^3+0y^4

        这里是输入y轴坐标点,返回结果为x坐标,想知道多远的点位坐标,将位置信息代入y即可。

构建出来的图形如下图所示,

        在unity中,将公式转为代码,输入五阶曲线系数数组,与y点的坐标,返回值为该坐标的x点坐标。即为:

 public float GetSplineX(float[] fit_params, float y_point){      return fit_params[0] + (fit_params[1] * y_point) + (fit_params[2] * (float)Math.Pow(y_point, 2.0)) - (fit_params[3] * (float)Math.Pow(y_point, 3.0)) + (fit_params[4] * (float)Math.Pow(y_point, 4.0));}

        初始化时构建车道线,创建Spline的物体

  private void CreatSplineMesh(){Spline_Render_Objs = new GameObject("Spline");Spline_Render_Objs.transform.localPosition = Vector3.zero;Spline_Render_Objs.transform.SetParent(base.transform);splineComputer = Spline_Render_Objs.AddComponent<SplineComputer>();splineComputer.type = Spline.Type.BSpline;//使用插件自带的Bspline效果划线,也可以选择贝塞尔曲线splineComputer.sampleRate = 5;splineComputer.sampleMode = SplineComputer.SampleMode.Uniform;splineComputer.space = SplineComputer.Space.Local;Spline_Render_Objs.AddComponent<MeshRenderer>().material = DottedLine_mat;//指定车道线材质SplineRenderer splineRenderer = Spline_Render_Objs.AddComponent<SplineRenderer>();splineRenderer.spline = splineComputer;splineRenderer.uvMode = MeshGenerator.UVMode.UniformClip;splineRenderer.uvScale = new Vector2(1f, 0.2f);splineComputer.RebuildImmediate();}

        在进行点位创建和赋值

for (int i = 0; i < y_distance; i++)//y_distance为具体想显示的长度
{x_Pos = GetSplineX(lane_info.lane_fit_params_left_5rd, i);SplinePoint m_point = new SplinePoint();m_point.position = pos;m_point.size = 0.5f;m_point.color = Color.white;splineComputer.SetPoint(_idx, m_point);
}

        构建出来的车道线如下图所示,这里只选择了0-39米的点位。

        目前车道线的长短可以根据Y轴的距离进行调整。

        但是若是遇到虚线+实线+虚线的车道线,该方法还有待升级(我也没想好咋整)

相关文章:

Unity场景内画车道线(根据五阶曲线系数)

之前做过使用Dreamteck Splines插件构建车道线之前需求是给定车道线的点位&#xff0c;根据点位来进行构建。 由于AI识别出来的点位不线性&#xff0c;画出来的车道线经常是歪七扭八&#xff0c;所以使用五阶曲线系数进行构建。 使用在线图形计算器进行测试构建&#xff0c;公式…...

IPLOOK百万级用户容量核心网惊艳亮相北京PT展

2024年9月25日&#xff0c;以“推动数实深度融合&#xff0c;共筑新质生产力”为主题&#xff0c;本届中国国际信息通信展&#xff08;PT展&#xff09;在北京国家会议中心正式拉开帷幕。 广州爱浦路网络技术有限公司&#xff08;简称&#xff1a;IPLOOK&#xff09;&#xff…...

家庭网络的ip安全性高吗

家庭网络的IP安全性是一个重要的话题&#xff0c;涉及到如何保护家庭设备和用户的隐私。家庭网络的安全性既有其优势&#xff0c;也存在一些潜在的风险。以下是关于家庭网络IP安全性的几个关键点&#xff1a; 1. 家庭网络的优势 私有IP地址的使用 家庭网络中的设备通常使用私…...

LLM阅读推荐

&#xff08;按名称排序&#xff09; 【徹底解説】これからのエンジニアの必携スキル、プロンプトエンジニアリングの手引「Prompt Engineering Guide」を読んでまとめてみた(opens in a new tab)3 Principles for prompt engineering with GPT-3(opens in a new tab)A beginn…...

计算机网络笔记001

讲义 1.计算机网络的定义  定义&#xff1a; 一批独立自治的计算机系统的互连集合体  说明&#xff1a; 独立自治的计算机系统&#xff0c; 互连的手段是各种各样的&#xff0c; 依据协议进行 工作  2.计算机网络和通信网络  通信网络&#xff1a; 重点研究通…...

如何用IDEA连接HBase

编写java代码&#xff0c;远程连接HBase进行相关的操作 一、先导依赖 代码如下&#xff1a; 二、连接成功...

【JS代码规范】如何优化if-else代码规范

1. 快速结束&#xff0c;减少没必要的else 案例一&#xff1a;2种互斥的条件判断 function test(data) {let result ;if (data < 0) {result 负数;} else {result 非负数;}return result; }优化一&#xff1a; function test(data) {if (data < 0) {return 负数;} …...

MovieLife 电影生活

MovieLife 电影生活 今天看到一个很有意思的项目&#xff1a;https://www.lampysecurity.com/post/the-infinite-audio-book “我有一个看似愚蠢的想法。通常&#xff0c;这类想法只是一闪而过&#xff0c;很少会付诸实践。但这次有所不同。假如你的生活是一部电影&#xff0c…...

网工内推 | 中级云运维工程师,双休,五险一金

01 博达人才 &#x1f537;招聘岗位&#xff1a;中级云运维工程师 &#x1f537;岗位职责 1、受理数据中心、云租户投诉、受理故障工单&#xff0c;并在时限内完成。 2、协助客户开通云产品&#xff0c;解答客户使用过程中的疑问。 3、处理云产品故障&#xff0c;协助进行故…...

Thingsboard规则链:Related Entity Data节点详解

引言 在复杂的物联网&#xff08;IoT&#xff09;生态系统中&#xff0c;数据的集成与分析是实现高效管理和智能决策的基础。Thingsboard作为一个强大的开源物联网平台&#xff0c;其规则链&#xff08;Rule Chains&#xff09;机制允许用户构建自定义的数据处理流程。其中&am…...

C++结尾

面试题 1.什么是虚函数&#xff1f;什么是纯虚函数 在定义函数时前面加virtual。虚函数是为了&#xff0c;父子类中只有一个该函数。如果在子类重写虚函数&#xff0c;那么用的就是子类重写的虚函数&#xff1b;如果子类没有重写虚函数&#xff0c;那么调用的是父类继承的虚函…...

Flutter鸿蒙化环境配置(windows)

Flutter鸿蒙化环境配置&#xff08;windows&#xff09; 参考资料Window配置Flutter的鸿蒙化环境下载配置环境变量HarmonyOS的环境变量配置配置Flutter的环境变量Flutter doctor -v 检测的问题flutter_flutter仓库地址的警告问题Fliutter doctor –v 报错[!] Android Studio (v…...

Vue入门之生命周期

文章目录 一、Vue 生命周期概述二、生命周期的四个阶段1. 创建阶段2. 挂载阶段3. 更新阶段4. 销毁阶段 三、代码案例四、总结 在 Vue 开发中&#xff0c;理解生命周期是非常重要的。Vue 的生命周期可以帮助我们在不同的阶段执行特定的逻辑&#xff0c;从而更好地控制组件的行为…...

UNI-SOP应用场景(1)- 纯前端预开发

在平时新项目开发中&#xff0c;前端小伙伴是否有这样的经历&#xff0c;hi&#xff0c;后端小伙伴们&#xff0c;系统啥时候能登录&#xff0c;啥时候能联调了&#xff0c;这是时候往往得到的回答就是&#xff0c;再等等&#xff0c;我们正在搭建系统呢&#xff0c;似曾相识的…...

力扣9.23

1014. 最佳观光组合 给你一个正整数数组 values&#xff0c;其中 values[i] 表示第 i 个观光景点的评分&#xff0c;并且两个景点 i 和 j 之间的 距离 为 j - i。 一对景点&#xff08;i < j&#xff09;组成的观光组合的得分为 values[i] values[j] i - j &#xff0c;…...

[Redis][事务]详细讲解

目录 0.什么是事务&#xff1f;1.Redis 事务本质2.Redis 事务意义3.事务操作1.MULTI2.EXEC3.DISCARD4.WATCH5.UNWATCH 0.什么是事务&#xff1f; Redis的事务和MySQL的事务概念上是类似的&#xff0c;都是把一系列操作绑定成一组&#xff0c;让这一组能够批量执行Redis事务和M…...

Latex——一行的划线 如何分开

代码&#xff1a; \cmidrule(r){3-4} \cmidrule(r){5-6} \cmidrule(r){7-8}效果&#xff1a; 参考文章&#xff1a; LaTeX技巧653&#xff1a;如何隔开LaTeX表格邻近\cline表格线&#xff1f;...

大数据:快速入门Scala+Flink

一、什么是Scala Scala 是一种多范式编程语言&#xff0c;它结合了面向对象编程和函数式编程的特性。Scala 这个名字是“可扩展语言”&#xff08;Scalable Language&#xff09;的缩写&#xff0c;意味着它被设计为能够适应不同规模的项目&#xff0c;从小型脚本到大型分布式…...

侧边菜单的展开和折叠

环境准备&#xff1a;Vue3Element-UI Plus <script setup> import {ref} from "vue";// 是否折叠菜单&#xff0c;默认折叠 const isCollapse ref(true)</script><template><el-container><el-aside><el-menu:collapse"isCo…...

自动化办公-Python中的for循环

for 循环是 Python 中用于迭代&#xff08;遍历&#xff09;序列&#xff08;如列表、元组、字典、集合、字符串&#xff09;或其他可迭代对象的控制结构。它允许您逐一访问序列中的每个元素&#xff0c;并对其执行操作。以下是对 for 循环的详细介绍&#xff0c;包括语法、使用…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...

【PX4飞控】mavros gps相关话题分析,经纬度海拔获取方法,卫星数锁定状态获取方法

使用 ROS1-Noetic 和 mavros v1.20.1&#xff0c; 携带经纬度海拔的话题主要有三个&#xff1a; /mavros/global_position/raw/fix/mavros/gpsstatus/gps1/raw/mavros/global_position/global 查看 mavros 源码&#xff0c;来分析他们的发布过程。发现前两个话题都对应了同一…...