已知空间三点求圆心坐标,在matlab中的实现方法

您所在的位置:网站首页 matlab编程求解三个圆的距离平方和为极小的点 已知空间三点求圆心坐标,在matlab中的实现方法

已知空间三点求圆心坐标,在matlab中的实现方法

2024-07-14 04:12| 来源: 网络整理| 查看: 265

先看参考文献: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