自动驾驶感知面试-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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【代码】Python3|无GUI环境中使用Seaborn作图的学习路线及代码(阴影折线图)

我有个需求是需要画图&#xff0c;让GPT帮我生成了一下学习计划。 学习路线依照GPT的来的&#xff0c;使用的Prompt工具是https://github.com/JushBJJ/Mr.-Ranedeer-AI-Tutor。 文章目录 PrerequisiteMain Curriculum1.1 Seaborn介绍Seaborn基础保存图形为文件练习 1.2 单变量数…

什么是Vue的服务端渲染(SSR)?它有什么作用?

Vue的服务端渲染&#xff08;SSR&#xff09;是指将Vue组件在服务器端进行渲染&#xff0c;然后将已经渲染好的页面返回给浏览器&#xff0c;相比于传统的客户端渲染&#xff0c;SSR可以更好地优化SEO和加速首屏加载速度。在传统的客户端渲染中&#xff0c;浏览器需要加载所有的…

【Spring云原生】Spring官宣,干掉原生JVM,推出 Spring Native!整体提升性能!Native镜像技术在Spring中的应用

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《Spring 狂野之旅&#xff1a;从入门到入魔》 &#x1f680; 本…

Linux——MySQL主从复制与读写分离

实验环境 虚拟机 3台 centos7.9 网卡NAT模式 数量 1 组件包mysql-5.6.36.tar.gz cmake-2.8.6.tar.gz 设备 IP 备注 Centos01 192.168.223.123 Amoeba Centos02 192.168.223.124 Master Centos03 192.168.223.125 Slave MySQL安装 主从同时操作 安装所需要的…

【探索AI】二十二 深度学习之第5周:生成对抗网络(GAN)

生成对抗网络&#xff08;GAN&#xff09; GAN的基本原理与结构常见的GAN模型&#xff08;如DCGAN、StyleGAN等&#xff09;图像生成与风格迁移任务实践&#xff1a;使用GAN进行图像生成或风格迁移任务 GAN的基本原理与结构 生成对抗网络&#xff08;GAN&#xff09;的基本原理…

【经验】f-string 的一些点

【经验】f-string 的一些点 省几个字别数错了对齐它现在几点 省几个字 让 f-string 给你写表达式&#xff0c;在 f-string 中使用 来自动打印表达式 a 10 b 25 print(f"{a b }") >>> a b 35别数错了 对于过大的数字难以一眼看出来它的数量级&#xf…

Android 中get请求网络数据 详细举例

请求链接 https://api.bilibili.com/x/web-interface/ranking 1.添加网络权限 依赖等 implementation com.squareup.okhttp3:okhttp:4.9.3 implementation com.google.code.gson:gson:2.8.92.写请求类network package com.example.myapplication;import android.graphics.Bi…

现代信号处理学习笔记(三)信号检测

通过观测数据判断信号是否存在&#xff0c;这一问题称为信号检测。 目录 前言 一、统计假设检验 1、信号检测的基本概念 2、信号检测理论测度 比率测度 概率测度 3、决策理论空间 二、概率密度函数与误差函数 1、概率密度函数 2、误差函数与补余误差函数 三、检测概…

TypeError: the JSON object must be str, bytes or bytearray, not dict

参考文章&#xff1a;https://blog.csdn.net/yuan2019035055/article/details/124934362 Python基础系列&#xff08;一&#xff09;搞懂json数据解析与字典之间的关系 代码&#xff1a; 报错信息: TypeError: the JSON object must be str, bytes or bytearray, not dict …

Python字符串中%d,%.f的用法

在字符串中&#xff0c;我们经常需要改变其中的一些几个字符&#xff0c;比如 第一个d%就是epoch1&#xff0c;会随着epoch的变化而变化。同理&#xff0c;后面的也是。打印出的结果就是 其中&#xff0c;epoch迭代了3次&#xff0c;从0开始。会发现 d%&#xff0c;是整数&…

.NET高级面试指南专题十四【 观察者模式介绍,最常用的设计模式之一】

简介&#xff1a; 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为型设计模式&#xff0c;其目的是定义了一种一对多的依赖关系&#xff0c;当一个对象的状态发生变化时&#xff0c;所有依赖于它的对象都会得到通知并自动更新。 原理&#xff1a; 在观察者模式中…

002-CSS-三角形

三角形 普通三角形带阴影的三角形&#xff1a;box-shadow带阴影的三角形&#xff1a;filter 普通三角形 &#x1f4a1; Tips&#xff1a;设置 div 盒子宽高为零&#xff0c;使用单边框实现 .triangle {width: 0;height: 0;border: 20px solid transparent;border-top-color: …

把python完全卸载干净

1.winR&#xff0c;输入control回车&#xff0c;点击程序和功能&#xff0c;在搜索框输入python&#xff0c;右键点击卸载 2、找到Python安装路径&#xff0c;把所有文件全部删除。 安装路径可以打开CMD输入&#xff1a;where python 3、强制删除Python.exe 打开cmd&#xff…

使用Java生成JWT(JSON Web Token)的详细指南

介绍 在现代应用程序中&#xff0c;身份验证和授权是至关重要的。JSON Web Token&#xff08;JWT&#xff09;是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;它定义了一种紧凑且自包含的方式用于在各方之间安全地传输信息。在本文中&#xff0c;我们将学习如何使…

大厂报价查询系统性能优化之道!

0 前言 机票查询系统&#xff0c;日均亿级流量&#xff0c;要求高吞吐&#xff0c;低延迟架构设计。提升缓存的效率以及实时计算模块长尾延迟&#xff0c;成为制约机票查询系统性能关键。本文介绍机票查询系统在缓存和实时计算两个领域的架构提升。 1 机票搜索服务概述 1.1 …

在k8s上部署dolphinscheduler

&#xff08;作者&#xff1a;陈玓玏&#xff09; 一、 前提条件 已部署k8s&#xff0c;版本信息如下&#xff1a; k8s为单机部署&#xff1b;已部署nfs&#xff0c;版本如下&#xff1b; 二、 部署helm 以下步骤安装的是二进制版本&#xff0c;如果通过脚本安装&#…

Bert Encoder和Transformer Encoder有什么不同

前言&#xff1a;本篇文章主要从代码实现角度研究 Bert Encoder和Transformer Encoder 有什么不同&#xff1f;应该可以帮助你&#xff1a; 深入了解Bert Encoder 的结构实现深入了解Transformer Encoder的结构实现 本篇文章不涉及对注意力机制实现的代码研究。 注&#xff1a;…

在Linux以命令行方式(静默方式/非图形化方式)安装MATLAB(正版)

1.根据教程&#xff0c;下载windows版本matlab&#xff0c;打开图形化界面&#xff0c;选择linux版本的只下载不安装 2.获取安装文件夹 3.获取许可证 4.安装 &#xff08;1&#xff09;跳过引用文章的2.2章节 &#xff08;2&#xff09;本文的安装文件夹代替引用文章的解压IS…

CSS变量和@property

CSS变量 var() CSS 变量是由CSS作者定义的实体&#xff0c;其中包含要在整个文档中重复使用的特定值。使用自定义属性来设置变量名&#xff0c;并使用特定的 var() 来访问。&#xff08;比如 color: var(--main-color);&#xff09;。 基本用法 CSS变量定义的作用域只在定义该…

Rio: Order-Preserving and CPU-Efficient Remote Storage Access——论文泛读

EuroSys 2023 Paper 论文阅读笔记整理 问题 现代NVMe SSD和RDMA网络提供了更高的带宽和并发性&#xff0c;但现有的网络存储系统&#xff08;例如&#xff0c;基于结构的NVMe&#xff09;&#xff0c;由于存储订购保证效率低下&#xff0c;无法充分利用这些新设备。在这些系统…