已知空间三点求圆心坐标,在matlab中的实现方法 |
您所在的位置:网站首页 › matlab编程求解三个圆的距离平方和为极小的点 › 已知空间三点求圆心坐标,在matlab中的实现方法 |
先看参考文献:https://blog.csdn.net/yanmy2012/article/details/8111600/ 当看到这一句时,默认已经理解了上面参考文献中三点求圆的线性代数理论。 已知理论,那么在matlab中如何实现符号运算呢? 基础知识:matlab编程语法,脚本文件,符号运算 测试环境:matlab2019 符号运算代码如下: clear; clc; syms x y z x1 y1 z1 x2 y2 z2 x3 y3 z3 x0 y0 z0 R Amatrix=[x,y,z,1;x1,y1,z1,1;x2,y2,z2,1;x3,y3,z3,1] A1matrix=[y1,z1,1;y2,z2,1;y3,z3,1] A1=det(A1matrix) B1matrix=[x1,z1,1;x2,z2,1;x3,z3,1] B1=-det(B1matrix) C1matrix=[x1,y1,1;x2,y2,1;x3,y3,1] C1=det(C1matrix) D1matrix=[x1,y1,z1;x2,y2,z2;x3,y3,z3] D1=-det(D1matrix) Circle1=(x1-x)(x1-x)+(y1-y)(y1-y)+(z1-z)(z1-z)-RR Circle2=(x2-x)(x2-x)+(y2-y)(y2-y)+(z2-z)(z2-z)-RR Circle3=(x3-x)(x3-x)+(y3-y)(y3-y)+(z3-z)(z3-z)-RR f12=Circle1-Circle2 [a21,a22]=coeffs(f12,x) A2=a21(1,1) [b21,b22]=coeffs(f12,y) B2=b21(1,1) [c21,c22]=coeffs(f12,z) C2=c21(1,1) D2=f12-a21(1,1)*x-b21(1,1)*y-c21(1,1)*z f23=Circle2-Circle3 [a31,a32]=coeffs(f23,x) A3=a31(1,1) [b31,b32]=coeffs(f23,y) B3=b31(1,1) [c31,c32]=coeffs(f23,z) C3=c31(1,1) D3=f23-a31(1,1)*x-b31(1,1)*y-c31(1,1)*z; pAMatrix=[A1,B1,C1;A2,B2,C2;A3,B3,C3]; pDMatrix=[D1;D2;D3]; X0=-inv(pAMatrix)*pDMatrix; X0=simplify(subs(X0)) 到这里为止,已知空间中不同的且不在同一直线上的三点坐标,其圆心坐标已经求得了,那么求圆的半径自然也不是问题了。 该知识应用场景之一:五轴或六轴机械臂,给定机械臂末端可以经过的三个空间坐标,机械臂如何进行圆弧插补?也许这个知识点就是需要了解的知识之一。 求圆心,半径,空间圆弧7段S加减速路点算法 源代码地址:https://download.csdn.net/download/sbetgcel/12441262 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |