当前位置: 首页 > 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;包括语法、使用…...

Python_itertools

itertools itertools.count(start, step) 返回一个无限迭代器&#xff0c;从指定的start开始&#xff0c;每次增加step。 import itertools # 从1开始&#xff0c;每次增加1&#xff0c;输出前5个数 for i in itertools.count(1, 1):if i > 5:breakprint(i)运行结果&#…...

Apache Iceberg 数据类型参考表

Apache Iceberg 概述-链接 Apache Iceberg 数据类型参考表 数据类型描述实例方法注意事项BOOLEAN布尔类型&#xff0c;表示真或假true, false用于条件判断&#xff0c;例如 WHERE is_active true。确保逻辑条件的正确性。INTEGER32位有符号整数42, -7可用于计算、聚合&#xf…...

职责链模式

职责链模式 责任链&#xff08;Chain of Responsibility&#xff09;模式&#xff1a;为了避免请求发送者与多个请求处理者耦合在一起&#xff0c;于是将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链&#xff1b;当有请求发生时&#xff0c;可将请求沿着这…...

新品 | Teledyne FLIR IIS 推出Forge 1GigE SWIR 短波红外工业相机系列

近日&#xff0c;51camera的合作伙伴Teledyne FLIR IIS推出了新品Forge 1GigE SWIR 130万像素的红外相机。 Forge 1GigE SWIR系列的首款相机配备宽频带、高灵敏度的Sony SenSWIR™️ 130万像素IMX990 InGaAs传感器。这款先进的传感器采用5um像素捕捉可见光和SWIR光谱&#xff…...

深入MySQL:掌握索引、事务、视图、存储过程与性能优化

在掌握了MySQL的基本操作之后&#xff0c;你可能会遇到更复杂的数据管理和优化需求。本文将介绍一些MySQL的进阶特性&#xff0c;包括索引、事务、视图、存储过程和函数、以及性能优化等内容。通过学习这些高级功能&#xff0c;你可以更高效地管理和优化你的数据库。 索引 索…...

【WSL——Windows 上使用 Linux 环境】

引入 以前在windows上使用linux工具链&#xff0c;一般都要安装虚拟机&#xff08;VMware/virtualBox)。虚拟机的缺点是&#xff0c;因为是完整的虚拟环境&#xff0c;消耗系统资源比较多。 windows自己开发了WSL功能&#xff0c;实现了虚拟机的功能&#xff0c;但是比虚拟机性…...

Redis:事务

什么是Redis事务 Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令&#xff0c;一个事务中所有命令都会被序列化。在事务执行过程&#xff0c;会按照顺序串行化执行队列中的命令&#xff0c;其他客户端提交的命令请求不会插入到事务执行命令序列中。 总结说&…...

策略模式的介绍和具体实现

❤ 作者主页&#xff1a;李奕赫揍小邰的博客 ❀ 个人介绍&#xff1a;大家好&#xff0c;我是李奕赫&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 记得点赞、收藏、评论⭐️⭐️⭐️ &#x1f4e3; 认真学习!!!&#x1f389;&#x1f389; 文章目录 策略接口三种…...

MySQL InnoDB MVCC数据结构分析

1、概述 MVCC&#xff08;Multiversion Concurrency Control&#xff09;多版本并发控制&#xff0c;通过维护不同的版本号&#xff0c;提供一种很好的并发控制技术&#xff0c;这种技术能够使读写操作不冲突&#xff0c;提升并发性能。 MySQL InnoDB存储引擎&#xff0c;在更…...

MySQL 8 查看 SQL 语句的执行进度

目录 1. 查询各阶段执行进度 &#xff08;1&#xff09;开启收集与统计汇总执行阶段信息的功能 &#xff08;2&#xff09;确定执行的SQL所属的thread_id &#xff08;3&#xff09;查询各阶段的执行进度 2. 查询SQL语句的整体执行进度 1. 查询各阶段执行进度 &#xff0…...