项目中用到三边定位,c#中没有MATLAB solve函数来解方程,只好人工去解方程了。

[csharp] view plain copy
  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. Point p1 = new Point() { X = 0, Y = 2, Distance = Math.Sqrt(5) };
  6. Point p2 = new Point() { X = 2, Y = 2, Distance = Math.Sqrt(5) };
  7. Point p3 = new Point() { X = 1, Y = 0, Distance = Math.Sqrt(0) };
  8. var p= GetPiontByThree(p1, p2, p3);
  9. Console.WriteLine("Point x:{0}",p.X);
  10. Console.WriteLine("Point y:{0}", p.Y);
  11. Console.ReadKey();
  12. }
  13. /// <summary>
  14. /// 三点绝对定位
  15. /// </summary>
  16. private static Point GetPiontByThree(Point p1, Point p2, Point p3)
  17. {
  18. /* Math.Pow(y1-Y)+Math.Pow(X-x1)=Math.Pow(D1)
  19. * Math.Pow(y2-Y)+Math.Pow(X-x2)=Math.Pow(D2)
  20. * Math.Pow(y3-Y)+Math.Pow(X-x3)=Math.Pow(D3)
  21. * 1-3.2-3解得:
  22. * 2 * (p1.X - p3.X)x + 2 * (p1.Y - p3.Y)y = Math.Pow(p1.X, 2) - Math.Pow(p3.X, 2) + Math.Pow(p1.Y, 2) - Math.Pow(p3.Y, 2) + Math.Pow(p3.Distance, 2) - Math.Pow(p1.Distance, 2);
  23. * 2 * (p2.X - p3.X)x + 2 * (p2.Y - p3.Y)y = Math.Pow(p2.X, 2) - Math.Pow(p3.X, 2) + Math.Pow(p2.Y, 2) - Math.Pow(p3.Y, 2) + Math.Pow(p3.Distance, 2) - Math.Pow(p2.Distance, 2);
  24. * 简化:
  25. * 2Ax+2By=C
  26. * 2Dx+2Ey=F
  27. * 简化:
  28. * x=(BF-EC)/(2BD-2AE)
  29. * y=(AF-DC)/(2AE-2BD)
  30. */
  31. var A = p1.X - p3.X;
  32. var B = p1.Y - p3.Y;
  33. var C = Math.Pow(p1.X, 2) - Math.Pow(p3.X, 2) + Math.Pow(p1.Y, 2) - Math.Pow(p3.Y, 2) + Math.Pow(p3.Distance, 2) - Math.Pow(p1.Distance, 2);
  34. var D = p2.X - p3.X;
  35. var E = p2.Y - p3.Y;
  36. var F = Math.Pow(p2.X, 2) - Math.Pow(p3.X, 2) + Math.Pow(p2.Y, 2) - Math.Pow(p3.Y, 2) + Math.Pow(p3.Distance, 2) - Math.Pow(p2.Distance, 2);
  37. var x = (B * F - E * C) / (2 * B * D - 2 * A * E);
  38. var y = (A * F - D * C) / (2 * A * E - 2 * B * D);
  39. Point P = new Point() { X = x, Y = y, Distance = 0 };
  40. return P;
  41. }
  42. }
  43. public class Point
  44. {
  45. public double X { get; set; }
  46. public double Y { get; set; }
  47. //表示指定点,据此点的距离
  48. public double Distance { get; set; }
  49. }

三点定位算法--用于平面2D定位相关推荐

  1. 最小二乘2D三点定位算法

    最小二乘(2D)三点定位算法 (pi−p0)T(pi−p0)=ri2(p_i - p_0)^T(p_i - p0) = r_i^2 (pi​−p0​)T(pi​−p0)=ri2​ arg⁡min⁡p0 ...

  2. 基于单目视觉的平面目标定位和坐标测量 (下) - 相机姿态估计和目标测量

    上回说到,我们回顾了机器视觉的基础知识,然后一顿操作之后得到了相机内参A和畸变系数dist. 现在我们开始定位目标的坐标. 这个过程包括几个子部分: 1.    标记检测 2.    指定世界坐标系, ...

  3. 算法工程师_浅谈算法工程师的职业定位与发展

    随着大数据和以深度学习为代表的人工智能技术的飞速发展,算法工程师这个职业逐渐成为国内互联网行业的标配.2016年3月,谷歌旗下DeepMind公司的围棋程序"AlphaGo"战胜职 ...

  4. 目标检测经典论文——R-CNN论文翻译(纯中文版):用于精确物体定位和语义分割的丰富特征层次结构(技术报告(第5版))

    目标检测经典论文翻译汇总:[翻译汇总] 翻译pdf文件下载:[下载地址] 此版为纯中文版,中英文对照版请稳步:[R-CNN中英文对照版] 用于精确物体定位和语义分割的丰富特征层次结构 技术报告(第5版 ...

  5. RANSAC 算法拟合平面

    RANSAC 算法拟合平面 视觉库为VisionPro 1.输入参数 Distance Threshold:对于拟合算法的每次迭代,测量候选平面与每个3D输入点之间的距离.比这个阈值更远的点被认为是离 ...

  6. 图像处理基本算法 车牌识别与定位

    图像处理基本算法 车牌识别与定位 标签: 图像处理 2013-02-20 22:35  4416人阅读  评论(1)  收藏  举报   分类: opencv(27)  版权声明:本文为博主原创文章, ...

  7. 谷歌地图如何将地球经纬度坐标系统转换成平面2D坐标系统

    一.赤道 二.本初子午线 三.经纬坐标如何将地球经纬度坐标系统转换成平面2D坐标的? 经纬度坐标转bai平面二维du坐标,是通过坐标投影zhi,将经dao纬度的曲面坐zhuan标值,投影变换为平面sh ...

  8. 【算法+图像处理】2D卷积与快速卷积算法C语言实现

    卷积算法在图像处理中有着广泛的应用,通常使用的去噪算法.边缘增强算法等的实现都使用到了2D卷积算法.这里介绍一下2D卷积算法和快速卷积算法的C语言实现. 卷积定义 即 步骤: 1)滑动核,使其中心位于 ...

  9. matlab chan算法定位,MATLAB实现基于Chan氏算法的三维TDOA定位

    % 功能:基于chan算法的TDOA三维定位 function [zp] = Chan_3(Noise,MS) %基站数目 BSN = 7; %基站位置,每一列为一个基站位置 BS = [0, 2*s ...

最新文章

  1. My Favorites
  2. -bash: sz: command not found
  3. php tp框架手册,php框架手册
  4. 全文搜索引擎选 ElasticSearch 还是 Solr
  5. 警笛声c语言程序,PIC警笛声音的程序
  6. jquery中json数据转换为字典
  7. java char占用多少字节_Java虚拟机:Java对象大小、对象内存布局及锁状态变化
  8. ios开发 访问mysql_iOS开发实战-时光记账Demo 网络版
  9. Windows2003 IIS上设置301定向,实现不带www域名跳转带www域名的方法
  10. Python题目:判断101-200之间有多少个素数,并输出所有素数,简单方法
  11. wps页眉显示一级标题_WPS教程--排版和打印--页眉和页脚
  12. 嵌入式系统开发笔记88:认识51微控制器系统架构
  13. Spring常用注解介绍 [附带代码]
  14. 使用YQL解决跨域请求json转jsonp问题
  15. 一个简单好用的磨皮祛斑算法理论和python实现
  16. 多台电脑磁盘(文件共享 磁盘共享)局域网共享
  17. 有衬线字体和无衬线字体。
  18. Thirteen Days 邻接表及广度优先遍历
  19. 这届年轻人有多爱养生?
  20. Devices STATUS Processing

热门文章

  1. 网络原理之TCP/IP协议
  2. python安装失败0x80070570_0x80070570 文件或目录损坏且无法读取 CHKDSK 修复方法
  3. P3387 【模板】缩点 洛谷 java题解 连通图+拓扑排序
  4. Python 爬虫十六式 - 第七式:RE:用匹配来演绎编程的艺术
  5. Zookeeper简单搭建
  6. chrome浏览器安装插件方法
  7. 科学计算机的圆周率,科学家用超级计算机计算圆周率,到底有什么意义?真能算出来吗?...
  8. SpringMVC的学习
  9. Autograd:你没有使用过的最佳的机器学习库?
  10. 短信设备常用AT指令集