自动驾驶感知面试-coding应用题

感知面试手撕代码:这个博主总结的很好,尤其是关于叉积的计算

双线性插值

双线性插值公式记忆方法和Python实现

NMS算法

#include<iostream>
#include<vector>
#include<algorithm>using namespace std;
struct Box {int x1,x2,y1,y2;float score;
};float iou(const Box& b1, const Box& b2) {int len = std::min(b1.x2, b2.x2) - std::max(b1.x1, b2.x1);int width = std::min(b1.y2, b2.y2) - std::max(b1.y1, b2.y1);int inter = std::max(0, len) * std::max(0, width);int area = (b1.x2 - b1.x1) * (b1.y2 - b1.y1) + (b2.x2 - b2.x1) * (b2.y2 - b2.y1);return float(inter) / area;
}std::vector<Box> nms(vector<Box>& boxes, float thr) {std::sort(boxes.begin(), boxes.end(), [](const Box& b1, const Box&b2) -> bool {return b1.score > b2.score;});vector<Box> res;vector<bool> supress(boxes.size(), false);for (int i = 0; i < boxes.size(); i++) {if (!supress[i]) {res.push_back(boxes[i]);for (int j = i + 1; j < boxes.size(); j++) {if (!supress[j] && iou(boxes[j], res.back()) > thr) {supress[j] = true;}}            }}return res;
}

计算机几何基础

1点到线段的距离

#include <iostream>
#include <cmath>
using namespace std;struct Point {double x, y;
};double distance(Point p1, Point p2) {return sqrt(pow(p2.x - p1.x, 2) + pow(p2.y - p1.y, 2));
}double distanceToLineSegment(Point p, Point p1, Point p2) {double area = abs((p1.x - p.x) * (p2.y - p.y) - (p1.y - p.y) * (p2.x - p.x));double len = distance(p1, p2);double dist = area / len;  // 根据二者面积相等计算double dotProduct = (p.x - p1.x) * (p2.x - p1.x) + (p.y - p1.y) * (p2.y - p1.y);if (dotProduct < 0) {  // 计算PP1,P2P1的夹角是否大于90度。return distance(p, p1);}dotProduct = (p.x - p2.x) * (p1.x - p2.x) + (p.y - p2.y) * (p1.y - p2.y);if (dotProduct < 0) {   // 计算PP2,P1P2的夹角是否大于90度。return distance(p, p2);}return dist;
}

2 点是否在三角形内

判断(AOxAB) · (AOxAC) < 0,(BOXBA) · (BOXBC) < 0, (COxCA)·(COxCB) < 0,三者同时小于零。

3 判断两条线段是否相交

这两个博客讲的更简单,通过快速排斥和跨立实验 https://blog.csdn.net/HelloZEX/article/details/80880385 https://blog.csdn.net/myf_666/article/details/124385438

这个博客讲的太复杂了 https://www.cnblogs.com/tuyang1129/p/9390376.html
在这里插入图片描述

4 已知三角形三个顶点,计算夹角

先计算叉积,再计算点积。叉积表示sin,点积表示cos,再用atant2计算夹角。

注:c++中std::atan2和std::atan有什么区别?

在C++中,std::atanstd::atan2都是数学函数,用于计算反正切值,但它们有以下主要区别:

  • std::atan(y)只接受一个参数,返回该参数的反正切值,结果在[][−π/2,π/2][−π/2,π/2]范围内。
  • std::atan2(y, x)接受两个参数,返回点(x, y)与正x轴之间角度的反正切值,结果在[−π,π]范围内。这允许atan2正确处理所有四个象限的角度,而atan只能处理两个象限。

std::atan2因此提供了更全面的角度计算功能,能够基于x和y的符号确定正确的角度,是处理二维空间角度的首选函数。

5 计算三角形面积

|(AB X AC)| / 2

6 计算任意多边形面积

按顺序每次连接相邻的两点和原点,构成一个三角形,计算该三角形的面积(计算叉积,不用管正负号,叉积对于凸多边形都是正的,对于凹多边形有正有负,刚好抵消),累加所有三角形的面积。

7 已知平面上的三个点A(x1,y1)、B(x2,y2)、C(x3,y3),判断它们是否在一条直线上?

方法一:判断向量AB和向量AC的斜率是否相等。即(y2 - y1)/(x2 - x1) == (y3 - y1)/(x3 - x1).为了防止除数为零的问题可以把这个判断转成乘法:(y3 - y1) * (x2 - x1) - (y2 - y1) * (x3 - x1)==0

8 判断一堆点是否位于两条直线上

https://www.cnblogs.com/ccut-ry/p/8734329.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/733194.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pytorch学习 day09(简单神经网络模型的搭建)

简单神经网络模型的搭建 针对CIFAR 10数据集的神经网络模型结构如下图&#xff1a; 由于上图的结构没有给出具体的padding、stride的值&#xff0c;所以我们需要根据以下公式&#xff0c;手动推算&#xff1a; 注意&#xff1a;当stride太大时&#xff0c;padding也会变得很大…

【NR 定位】3GPP NR Positioning 5G定位标准解读(九)-增强的小区ID定位

前言 3GPP NR Positioning 5G定位标准&#xff1a;3GPP TS 38.305 V18 3GPP 标准网址&#xff1a;Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;一&#xff09;-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;…

基于springboot+vue的食品安全管理系统(源码+论文)

目录 前言 一、功能设计 二、功能实现 1 首页 2 后台登录 3 食品信息添加页面 4 食品查询 三、库表设计 四、论文 前言 从事食品行业的商家可能会对于食品的储存以及食品的销售&#xff0c;都有着不同门道的想法&#xff0c;那么如何能将这些想法一一实现&#xff0c;…

content-type类型有哪些

Content-Type 是互联网上用来标识 MIME 类型&#xff08;媒体类型&#xff09;的一组字符。它在 HTTP 协议的消息头中使用&#xff0c;用以指示请求和响应中的媒体数据格式标签。Content-Type 对于正确地处理和显示网络上的资源至关重要&#xff0c;因为它决定了文件接收方将以…

大模型笔记:幻觉 hallucination

1 介绍 “幻觉” (Hallucination)&#xff0c;指模型生成自然流畅&#xff0c;语法正确但实际上毫无意义且包含虚假信息即事实错误的文本&#xff0c;以假乱真&#xff0c;就像人产生的幻觉一样。 举个例子就是&#xff0c;即使现在的chatgpt-4&#xff0c;你问他一些有确切…

计算机网络 八股

计算机网络体系结构 OSI&#xff1a;物理层、数据链路层、网络层、运输层、会话层、表示层、应用层

【FFmpeg】ffmpeg 命令行参数 ⑤ ( 使用 ffmpeg 命令提取 音视频 数据 | 保留封装格式 | 保留编码格式 | 重新编码 )

文章目录 一、使用 ffmpeg 命令提取 音视频 数据1、提取音频数据 - 保留封装格式2、提取视频数据 - 保留封装格式3、提取视频数据 - 保留编码格式4、提取视频数据 - 重新编码5、提取音频数据 - 保留编码格式6、提取音频数据 - 重新编码 一、使用 ffmpeg 命令提取 音视频 数据 1…

如何批量加密U盘?U盘如何批量设置密码?

但U盘数量较多时&#xff0c;加密U盘的工作就会非常麻烦。这时你需要使用U盘批量加密工具。那么&#xff0c;如何批量加密U盘&#xff1f; 批量加密U盘 想要实现U盘批量加密&#xff0c;我们需要使用专业的U盘批量加密工具&#xff0c;如U盘内存卡批量只读加密专家。它支持批量…

Xargs命令详解: 构建和执行命令的必备工具

xargs&#xff0c;在Unix和大多数类Unix的操作系统中&#xff0c;被广泛使用来从标准输入构建和执行命令。在一些场合下&#xff0c;某些命令无法直接接收标准输入作为参数&#xff0c;而xargs命令将能够用来解决这个问题。 Xargs的功能理解 xargs命令的主要作用是读取来自标…

RabbitMQ发布确认高级版

1.前言 在生产环境中由于一些不明原因&#xff0c;导致 RabbitMQ 重启&#xff0c;在 RabbitMQ 重启期间生产者消息投递失败&#xff0c; 导致消息丢失&#xff0c;需要手动处理和恢复。于是&#xff0c;我们开始思考&#xff0c;如何才能进行 RabbitMQ 的消息可靠投递呢&…

代码随想录训练营第41天 | 动态规划:01背包理论基础、动态规划:01背包理论基础(滚动数组)、LeetCode 416.分割等和子集

动态规划&#xff1a;01背包理论基础 文章讲解&#xff1a;代码随想录(programmercarl.com) 视频讲解&#xff1a;带你学透0-1背包问题&#xff01;_哔哩哔哩_bilibili 动态规划&#xff1a;01背包理论基础&#xff08;滚动数组&#xff09; 文章讲解&#xff1a;代码随想录(…

std::timed_mutex解释

std::timed_mutex 是 C11 标准库中引入的一种互斥量&#xff08;mutex&#xff09;类型&#xff0c;它允许线程在尝试获取锁时设置超时时间。如果在超时时间内无法获取锁&#xff0c;线程可以选择放弃锁或者执行其他操作。 std::timed_mutex 类似于 std::mutex&#xff0c;但是…

Dutree:Linux 文件系统磁盘使用追踪工具

在 Linux 系统中&#xff0c;对文件系统的磁盘使用情况进行跟踪和管理是至关重要的。dutree 是一个功能强大的工具&#xff0c;它能够以可视化的方式展示文件系统中的目录和文件的大小&#xff0c;帮助用户更好地了解磁盘空间的使用情况。本文将介绍 dutree 工具的使用方法、功…

Cocos Creator 2d光照

godot游戏引擎是有2d光照的&#xff0c;用起来感觉还是很强大的&#xff0c;不知道他是怎么搞的&#xff0c;有时间看看他们怎么实现的。 之前一直以为cocos社区里面没有2d光照的实现&#xff0c;偶然看到2d实现的具体逻辑&#xff0c;现在整理如下&#xff0c; 一&#xff1…

nextjs上的DDD架构

背景 新入职公司&#xff0c;需要快速把之前杂乱无章的首页&#xff08;有复杂业务&#xff0c;nextjs&#xff09;搭一个靠谱的架构&#xff0c;否则基本没办法把事情继续推进了&#xff08;核心流程需要持续大量适配到不同的后端实现上&#xff09;。 个人客户端出身&#x…

【java】22:try-catch 异常处理

try-catch 方式处理异常说明 public static void main(String[] args) { int num1 10; int num2 0; try { int res num1 / num2; } catch (Exception e) { System.out.println(e.getMessage()); } } 注意事项 1)如果异常发生了&#xff0c;则异常发生后面的代码不会执行&…

AWK命令详解: 源于UNIX的强大文本处理神器

AWK&#xff0c;1977年由Alfred Aho&#xff0c;Peter J. Weinberger和Brian Kernighan共同在贝尔实验室创建&#xff0c;是一个强大的文本分析工具&#xff0c;跨越了几十年的发展&#xff0c;一直在UNIX和类UNIX系统中广为使用。 AWK的功能理解 AWK主要用于在文本文件中搜索…

前后端分离项目Docker部署指南(下)

目录 前言&#xff1a; 一.安装nginx 创建目录 上传nginx.conf至/data/nginx/conf文件夹中 运行启动容器 上传静态资源文件 ​编辑 访问结果 前言&#xff1a; 在上一篇博客中&#xff0c;我们深入探讨了如何使用Docker部署一个前后端分离的项目中的后端部分。我们构建…

基于qt的图书管理系统----05其他优化

参考b站&#xff1a;视频连接 源码github&#xff1a;github 目录 1 优化借阅记录显示2 时间显示为年月日3 注册接口 1 优化借阅记录显示 现在只能显示部分信息&#xff0c;把接的书名和人的信息全部显示 在sql语句里替换为这一句即可实现查询相关联的所有信息 QString str…

单例九品--第七品

单例九品第七品 上一品引入写在前边代码部分实现思路的评注与思考下一品的设计思考 上一品引入 第六品着重解决了因为链接顺序造成的未定义问题&#xff0c;通过强制对象完成编译期初始化和使用基本类型代替抽象类型&#xff0c;使得全局对象的缺省初始化从不平凡变为平凡初始…