已知三角形的两点坐标,和三个边长,求第三点的坐标

2023-11-15

前几天做一个功能,实现N多圆球的碰撞时,写的该算法.代码比较容易,使用了三角形的余弦定理.算法是二维的,改成三维也容易.其实三维的我也实现过,用于骨骼动画的IK处理上.

 1 // 已知三角形的两点坐标,和三个边长,求第三点的坐标.
 2 bool CalculateTriangleThirdPoint(const Vector2& vA, const Vector2& vB, Vector2& vC, float a, float b, float c)
 3 {
 4     float cosA = (b*b + c*c - a*a) / (2*b*c);
 5     if (cosA > 1.0f || cosA < -1.0f)
 6     {
 7         return false;
 8     }
 9     float angleA = acosf(cosA);
10     float sinA = sinf(angleA);
11 
12     // 判断C在直线AB的左边还是右边
13     if ((vA.x-vC.x)*(vB.y-vC.y) - (vB.x-vC.x)*(vA.y-vC.y) > 0.0f)
14     {
15         sinA = -sinA;
16     }
17 
18     Vector2 vAB = vB - vA;
19 
20     // 对向量AB旋转A的角度,即得到AC的向量
21     Vector2 vAC;
22     vAC.x =  cosA*vAB.x + sinA*vAB.y;
23     vAC.y = -sinA*vAB.x + cosA*vAB.y;
24     D3DXVec2Normalize(&vAC, &vAC);
25 
26     vC = vA + vAC*b;
27 
28     /*
29     // 验证用
30     Vector2 vBC = vC - vB;
31     float disBC = sqrtf(vBC.x*vBC.x + vBC.y*vBC.y);
32     */
33 
34     return true;
35 }

 

转载于:https://my.oschina.net/abcijkxyz/blog/722680

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

已知三角形的两点坐标,和三个边长,求第三点的坐标 的相关文章

随机推荐

  • [1220]hue数据导出

    1 执行要下载的sql语句 2 执行完成后 点击下面导出 3 选择所有 4 选择每个人对应的文件夹 没有自己名称的可以创建一个 5 选择导出 6 右面是导出执行时的界面 7 选择已经执行的文件 8 按照下面截图提示 就可以将文件下载到本地了
  • iOS上架报错:无法添加以供审核

    无法提交以供审核 要开始审核流程 必须提供以下项目 您必须为要添加的 app 提供版权信息 您在提交 app 审核时遇到的问题是因为需要提供版权信息 而您的 app 缺少相关的版权信息 以下是解决此问题的步骤 确认您是否拥有 app 的版权
  • kettle 关于数据库事务操作的解释说明

    事务与数据库 1 数据库连接只在执行作业或转换时使用 在作业里 每一个作业项都打开和关闭一个独立的数据库连接 转换也是如此 但是因为转换里的步骤是并行执行的 每个步骤都打开一个独立的数据库连接并开始一个事务 尽管这样在很多情况下会提高性能
  • Airbnb深度学习在搜索领域的探索总结

    今天的博客主要参考了Airbnb发表的paper Applying Deep Learning To Airbnb Search 这篇paper介绍了近2年Airbnb在搜索场景下所使用模型的演进路线 以及一些失败的总结和经验的总结 最难能
  • 常用的渗透测试工具之 SQLMap

    web安全攻防 第三章学习之SQLmap SQLMap介绍 SQLMap是自动化的SQL注入工具 主要功能是扫描 发现并利用URL的SQL注入漏洞 内置了很多绕过插件 SQLMap采用了五种独特的SQL注入技术 如下 1 基于布尔类型的盲注
  • maven deploy 遇到 “方法不会覆盖或实现超类型的方法” 不要慌

    思考问题 这个bug看的我莫名其妙 看名字也看不懂说的啥 在网上看到说什么把 Override去掉就行了什么 我就觉得很奇怪 跟这个能有什么关系呢 网上既然说是跟 Override有关 那么这应该是是跟我实现的接口有关 后来发现是我在接口中
  • 【星海随笔】Windows 下 安装 Eclipse IDE 编辑 C++ Code

    首先下载Eclips https download csdn net download weixin 41997073 86727250 安装后 然后点点点就可以了 但要记住自己安装的路径 安装后 先认识一下这个工具 File可以创建项目
  • sublime vue 语法高亮插件安装

    转自 http www cnblogs com cosnyang p 6290950 html 默认情况下 Vue js 的单文件组件 vue 在 sublime 编辑器中是不被识别的 若要想高亮显示 需要安装插件 Vue Syntax H
  • No such operator image::read_file问题解决

    在学习动手学深度学习这门课的时候 在13 6 节 标检测数据集这一章遇到了问题 读取数据的时候报错 No such operator image read file 网上有人说问题在于pytorch版本和torchvision版本不对应 可
  • weixin-js-sdk使用

    注意 以下内容自身的项目为uniapp编译生成微信小程序 小程序内嵌webview 一 微信初始化 安装微信sdk npm install weixin js sdk save 页面引入 import wx from weixin js s
  • 构建高性能数据库缓存之Redis(一)

    一 Redis概述 1 1 什么是redis Redis是一个开源的用ANSI C编写 支持网络 基于内存 亦可持久化的日志型 Key Value数据库 根据DB Engines com站点月度排行的数据显示 Reidis是最流行的键值对存
  • SpringBoot整合MinIO

    文章目录 1 问题背景 2 前言 3 步骤 3 1 引入依赖 3 2 连接MinIO服务端的必要参数 3 3 代码实现文件上传功能 3 4 验证 1 问题背景 前面搭建了MinIO容器 现在来研究SpringBoot整合MinIO 2 前言
  • 并发编程基础知识(一)[进程篇]

    目录 一 程序的执行方式 1 进程是什么东西 2 进程与程序区别 3 进程状态 4 linux进程地址空间布局 5 linux下进程相关的API函数 1 创建一个新进程 2 进程退出 3 等待子进程退出 4 让一个进程去执行一个指定的程序文
  • 什么是迁移学习(Transfer Learning)?【精讲+代码实例】

    文章目录 1 Introduction 2 Development of Machine Learning 3 What is transfer learning 4 How to transfer 4 1 Example 1 物体识别 4
  • UE4 C++ 类的4种引用类型,和异步加载资产

    UE4 C 类的4种引用类型 和异步加载资产 4种引用类型 对象引用 引用 World 的实例对象 就是直接定义 UPROPERTY EditAnywhere BlueprintReadOnly Category My 对象引用 UWorl
  • Hive分组排序

    系统环境 Linux Ubuntu 16 04 jdk 7u75 linux x64 hive 1 1 0 cdh5 4 5 hadoop 2 6 0 cdh5 4 5 mysql 5 7 24 相关知识 Hive中支持多种分组操作 Ord
  • 【D-S证据理论】学习笔记

    Dempster Shafer证据理论学习笔记 引言 证据理论最早由Dempster提出主要用来解决不确定性问题的主要工具 后来被Shafer改进 现在被称为D S证据理论 D S证据理论的突出优势就是能够刻画信息的不确定性和未知性 该理论
  • 数字化转型战略下的数据安全问题及治理对策

    随着数字化转型在各行业的持续推进 数据作为生产的重要要素 其安全性日益受到关注 如何在数据安全各项法律法规的强监管下 确保企业业务合法 数据使用合规 业务有序发展成为当前全行业关注的焦点 本文将分析当前数字化转型背景下的数据安全现状 梳理存
  • 华三ftp服务器信息发布命令,h3cne命令行.doc

    h3cne命令行 PAGE13 NUMPAGES13 目 录 TOC o 1 3 h z u HYPERLINK l Toc283211304 1 常规系统维护 PAGEREF Toc283211304 h 2 HYPERLINK l To
  • 已知三角形的两点坐标,和三个边长,求第三点的坐标

    前几天做一个功能 实现N多圆球的碰撞时 写的该算法 代码比较容易 使用了三角形的余弦定理 算法是二维的 改成三维也容易 其实三维的我也实现过 用于骨骼动画的IK处理上 1 已知三角形的两点坐标 和三个边长 求第三点的坐标 2 bool Ca