下载此文档

已知空间N点坐标求圆心坐标,半径 文档.docx


文档分类:高等教育 | 页数:约17页 举报非法文档有奖
1/17
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/17 下载此文档
文档列表 文档介绍
已知空间 N 点坐标求圆心坐标,半径注意哦这里是求圆心不是球心哦条件:已知空间 N 点坐标,格式如下求圆心坐标,半径- - - - - - - - - - - - - - - - - - ........................................................ 实现方法:用最小二乘法拟合出球面方程和平面方程,两者相交即为所求圆曲线球面方程: (x- a)^2 + (y- b)^2 + (z- c)^2 = R^2 展开: x^2 + y^2 +z ^2 + a^2 +b^2 +c^2 - 2ax - 2by -2cz =R ^2 令A= 2a ;B =2b ;C =2c D=a^2 +b^2 +c^2 -R^2 得 x^2 + y^2 +z ^2 - Ax -By - Cz +D =0 即: Ax +By +Cz -D = x^2 +y^2 +z^2 用矩阵表示这 N 组数据如下形式现在就是求 ABCD 的问题了具体步骤如下平面方程 A'x+ B'y+ C'z+ D'=0 可化为 Ax+By+Cz -1 =0 用矩阵表示如下同样可以求出 ABC 这样就有了球面方程球心坐标球半径和平面方程了如图所示(网络找的图,意思着看囧) 圆心为球心到平面的垂足(也就是平面外一点到平面的坐标问题) 半径为 sqrt( 球半径^2 - 球心到平面的距离^2) 设平面方程为 AX+BY+CZ +D =0①球心坐标(a,b,c) 平面外一点到平面的坐标问题: 则平面的法向量为(A ,B ,C) 设垂足即圆心(x' y' z') 球心到圆心的连线与法向量是平行的可以得到如下(x' -a )/A = (y' -b)/B = (z' - c)/C =t②由②得 x'= At+ a; y'=Bt+b; z'=Ct+ c; 带入①可以得到(x' , y', z') 平面外一点到平面的距离问题 d= abs(Ax' + By' +C z' +D) / sqrt(A^2 + B^2 +C^2) 到此为止已经有了足够的理论知识,下面是代码分别用 OPENCV 和C 实现 1// :定义控制台应用程序的入口点。 2// 34#include "" 5#include <iostream> 6#include <fstream> 7#include <cmath> 8usingnamespace std; 910 #include <> 11 #include <> 12 #include <> 13 14 #ifdef DEBUG 15 #ment(lib,"") 16 #ment(lib,"") 17 #ment(lib,"") 18 #else 19 #ment(lib,"") 20 #ment(lib,"") 21 #ment(lib,"") 22 23 #endif 24 25 void fitRound( char *filepath, int n) 26 {27 ifstream file(filepath); 28 //int n=0; // 数据组数 29 30 //file>>n; 31 /* 32 x~NX4 33 |x1 y1 z1 -1 | 34 |. .. .... .......... | 35 |.. ...... ..........| 36 |xn yn zn -1| 37 */ 38 int xsize =4*n* sizeof (double ); 39 double *x =(double *)malloc(xsize); 40 /* 41y~NX1 42|x1^2 +y1^2 +z1^2 | 43|.......................................| 44|.......................................| 45|xn^2+yn^2+zn^2 | 46 */ 47 int ysize =n*sizeof (double ); 48 double *y =(d

已知空间N点坐标求圆心坐标,半径 文档 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数17
  • 收藏数0 收藏
  • 顶次数0
  • 上传人63229029
  • 文件大小116 KB
  • 时间2017-01-04