Unity中计算两个三维坐标点的各种方法

1、 根据勾股定理计算两点的距离

  /// <summary>/// 根据勾股定理计算两点的距离/// </summary>/// <param name="point1"></param>/// <param name="point2"></param>/// <returns></returns>private float CalculateTwoPointDistance(Vector3 point1, Vector3 point2){//根据勾股定理(a²+b²=c²)求出支撑杆长度,开c的平方根得到弦的长度float c = Vector3.Distance(point2, point1);float a = Mathf.Abs(point2.y - point1.y);return Mathf.Sqrt(Mathf.Pow(c, 2) - Mathf.Pow(a, 2));}

2、计算两条向量在某平面上的投影之间的角度。有正负值的角度。根据左手定律确定顺、逆时针旋转方向

    /// <summary>/// 计算两条向量在某平面上的投影之间的角度。有正负值的角度。根据左手定律确定顺、逆时针旋转方向/// </summary>/// <param name="from"> 当前向量 </param>/// <param name="to"> 比较向量 </param>/// <returns></returns>private float SignedAngleProject(Vector3 from, Vector3 to, Vector3 plane){/* 计算投影向量 */Vector3 projectLast = Vector3.ProjectOnPlane(from, plane);Vector3 projectCur = Vector3.ProjectOnPlane(to, plane);float signed_angle = Vector3.SignedAngle(projectLast.normalized, projectCur.normalized, plane);return signed_angle;}

3、获取两点之间距离一定百分比的一个点

/// <summary>/// 获取两点之间距离一定百分比的一个点/// </summary>/// <param name="start">起始点</param>/// <param name="end">结束点</param>/// <param name="percent">起始点到目标点距离百分比</param>/// <returns></returns>public static Vector3 CalcBetweenPoint(Vector3 start, Vector3 end, float percent = 0.5f){Vector3 normal = (end - start).normalized;float distance = Vector3.Distance(start, end);return normal * (distance * percent) + start;}

4、计算目标物体相对于自身方位(前后左右上下)

/// <summary>/// 计算目标物体相对于自身方位/// </summary>/// <param name="target"></param>public float CalcTargetDirForMe(Transform target, DirectionType directionType, Transform oneself){Vector3 dir = (target.position - oneself.position).normalized; //位置差,方向float dot;if (directionType.Equals(DirectionType.Forward))dot = Vector3.Dot(target.forward, dir);//点乘判断前后   //dot >0在前  <0在后else if (directionType.Equals(DirectionType.Right))dot = Vector3.Dot(target.right, dir);//点乘判断左右else if (directionType.Equals(DirectionType.Up))dot = Vector3.Dot(target.up, dir);//点乘判断上下elsedot = 0;//中心return dot;}public enum DirectionType{Forward,Right,Up,}

5、计算目标物体相对于自身方位(前后)

/// <summary>/// 计算目标物体相对于自身方位/// </summary>/// <param name="target"></param>public float CalcTargetDirForMe(Transform target){Vector3 dir = target.position - cameraRig.position; //位置差,方向float dot = Vector3.Dot(target.forward, dir);//点乘判断前后   //dot >0在前  <0在后 return dot;}

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

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

相关文章

《如何使用C语言去下三子棋?》

目录 一、环境配置 二、功能模块 1.打印菜单 2.初始化并打印棋盘 3、行棋 3.1玩家行棋 3.2电脑行棋 4、判断是否和棋 5.判赢 三、代码实现 1、test.c文件 2、game.c文件 3、game.h文件 一、环境配置 本游戏用到三个文件&#xff0c;分别是两个源文件test.c game.c 和…

JWT令牌校验是什么东西?举个例子

JWT&#xff08;JSON Web Token&#xff09;令牌校验是验证JWT令牌的有效性和真实性的过程。JWT是一种用于在网络应用间安全传递信息的开放标准&#xff08;RFC 7519&#xff09;&#xff0c;它由三部分组成&#xff1a;头部&#xff08;header&#xff09;、载荷&#xff08;p…

zabbix-server-pgsql docker镜像备忘

Environment Variables 基本变量 When you start the zabbix-server-pgsql image, you can adjust the configuration of the Zabbix server by passing one or more environment variables on the docker run command line. DB_SERVER_HOST This variable is IP or DNS nam…

cad转shp再转3dtiles生成白模

1、准备CAD数据 2、arcgis中添加cad数据 添加面 cad中的标高字段是能带进arcgis中的&#xff0c;如果这个数据是建筑高度&#xff0c;可以直接用了 3、转shp 4、shp转3dtiles白模 cesiumlab中shp转3dtiles白模效果一

【智能硬件、大模型、LLM 智能音箱】Emo:基于树莓派 4B DIY 能笑会动的桌面机器人

简介 Emo 是一款个人伴侣机器人,集时尚与创新于一身。他的诞生离不开最新的树莓派 4 技术和先进的设计。他不仅仅是一款机器人,更是一个活生生的存在。与其他机器人不同,他拥有独特的个性和情感,能够俘获你的心灵。 硬件部分 – 树莓派 4B – 微雪 2 英寸 IPS LCD 显示屏…

Spring Cloud Alibaba微服务从入门到进阶(三)

Spring Cloud Alibaba是spring Cloud的子项目 Spring Cloud Alibaba的主要组件&#xff08;红框内是开源的&#xff09; Spring Cloud是快速构建分布式系统的工具集&#xff0c; Spring Cloud提供了很多分布式功能 Spring Cloud常用子项目 项目整合 Spring Cloud Alibaba …

搭建项目后台系统基础架构

任务描述 1、了解搭建民航后端框架 2、使用IDEA创建基于SpringBoot、MyBatis、MySQL、Redis的Java项目 3、以原项目为参照搭建项目所涉及到的各个业务和底层服务 4、以原项目为例&#xff0c;具体介绍各个目录情况并参照创建相关文件夹 1、创建项目后端 BigData-KongGuan …

海豚调度系列之:任务类型——SQL节点

海豚调度系列之&#xff1a;任务类型——SQL节点 一、SQL节点二、创建任务三、任务参数四、任务样例五、运行该任务成功之后在hive中查询结果六、使用前置sql和后置sql示例 一、SQL节点 SQL任务类型&#xff0c;用于连接数据库并执行相应SQL。 二、创建任务 点击项目管理-项…

JVM,GC算法,垃圾回收器,类加载器,进行线上JVM性能调优。

JVM&#xff08;Java Virtual Machine&#xff0c;Java虚拟机&#xff09;是Java程序的运行环境&#xff0c;它在操作系统上提供了一个抽象层&#xff0c;使得Java程序可以独立于硬件平台运行。JVM有自己的指令集和内存管理机制&#xff0c;它负责将Java字节码转换为机器码并执…

清廉机关建设宣传稿件怎样联系媒体投稿发表?

在推进清廉机关建设的伟大征程中,我们深知信息宣传的重要性。如何将清廉机关建设的成果和理念广泛传播,让更多人了解并参与到这一伟大事业中来,成为我们面临的重要课题。 过去,我们或许曾经历过联系媒体投稿的种种心酸。一家家媒体的联系,一次次的等待与回复,其中的艰辛与不易…

mapperXML标签总结

MyBatis 的真正强大在于它的语句映射&#xff0c;这是它的魔力所在。由于它的异常强大&#xff0c;映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比&#xff0c;省掉了将近 95% 的代码。MyBatis 致力于减少使用成本&#xff0c;让用户能更专注于…

春风吹又生的开源项目「GitHub 热点速览」

随着上周知名 Switch 开源模拟器 Yuzu&#xff08;柚子&#xff09;被任天堂起诉&#xff0c;该项目作者就删库了&#xff0c;但还是要赔偿任天堂数百万美元。此事还在 GitHub 上掀起了一波 Yuzu fork 项目的小浪潮&#xff0c;正所谓野火烧不尽&#xff0c;春风吹又生。 很多读…

Unity使用Addressable热更新

先看热更新的gif: Addressable是Unity推出的打ab包方案。不需要手动写AB打包脚手架了&#xff0c;不需要关心依赖&#xff0c;这也简化了ab热更新的流程。Addressable打包需要先将资源放入group中&#xff0c;按group来打包&#xff0c;每个group对应一个ScriptableObject的配置…

大模型学习笔记(一):部署ChatGLM模型以及stable-diffusion模型

大模型学习笔记&#xff08;一&#xff09;&#xff1a;部署ChatGLM模型以及stable-diffusion模型 注册算力平台&#xff08;驱动云平台&#xff09;1.平台注册2.查看算力3.进入平台中心 部署ChatGLM3-6B模型1.创建项目2.配置环境设置镜像源、克隆项目修改requirements 3.修改w…

【git报错】【重置代理】Failed to connect to github.com port 443: Connection refused

重置代理 git config --global --unset http.proxy git config --global --unset https.proxy

VC-旅游系统-213-(代码+说明)

转载地址: http://www.3q2008.com/soft/search.asp?keyword旅游系统 旅游信息管理系统开题报告 一、研究目的 旅游信息管理系统能帮助旅行社在游客的市场开拓、游客的信息管理、客户服务等方面进行综合处理。使旅行社能够准确的掌握客户的市场动态&#xff0c;充分了解对客户…

嵌入式学习day37 数据结构

1.sqlite3_open int sqlite3_open( const char *filename, /* Database filename (UTF-8) */ sqlite3 **ppDb /* OUT: SQLite db handle */ ); 功能: 打开数据库文件(创建一个数据库连接) 参数: filename:数据库文…

盲盒网站遭遇DDoS攻击,高防ip是如何起到安全防护的?

随着盲盒市场的快速发展和在线盲盒平台的普及&#xff0c;网站安全问题备受关注。其中&#xff0c;DDoS&#xff08;分布式拒绝服务&#xff09;攻击是一种常见的网络安全威胁&#xff0c;会给盲盒网站带来严重的影响&#xff0c;如网络中断、系统崩溃等问题。为了应对这种风险…

python使用rabbitmq发送消息和接收消息数据

发送消息 import pika# 设置RabbitMQ连接参数(更改账号密码) credentials pika.PlainCredentials(username, password) # 更改为自己的服务器地址 parameters pika.ConnectionParameters(192.168.0.157, 5672, /, credentials)# 建立到RabbitMQ的连接 connection pika.Bloc…

华为配置OSPF的Stub区域示例

配置OSPF的Stub区域示例 组网图形 图1 配置OSPF Stub区域组网图 Stub区域简介配置注意事项组网需求配置思路操作步骤配置文件 Stub区域简介 Stub区域的ABR不传播它们接收到的自治系统外部路由&#xff0c;在Stub区域中路由器的路由表规模以及路由信息传递的数量都会大大减少…