function fsolve_sandianzuobiaoxi()
format short
options = optimset('MaxFunEvals',300,'MaxIter',300)
x=fsolve(@myfun,[240;240;10],options) %调用函数
end
function f=myfun(x)
syms x0 y0 z0
A=[119.806374;149.341095;4.584520];
B=[372.825714;343.291016;32.235802];
C=[148.859406;373.197510;20.230499];
O=[x0;y0;z0];
f1=(norm([A(1,1)-O(1,1);A(2,1)-O(2,1);A(3,1)-O(3,1)]))^2+(norm([C(1,1)-O(1,1);C(2,1)-O(2,1);C(3,1)-O(3,1)]))^2-(norm([A(1,1)-C(1,1);A(2,1)-C(2,1);A(3,1)-C(3,1)]))^2;%勾股定理,原点与其中两点构成直角三角形
f2=(norm([B(1,1)-O(1,1);B(2,1)-O(2,1);B(3,1)-O(3,1)]))^2+(norm([C(1,1)-O(1,1);C(2,1)-O(2,1);C(3,1)-O(3,1)]))^2-(norm([B(1,1)-C(1,1);B(2,1)-C(2,1);B(3,1)-C(3,1)]))^2;%勾股定理,原点与其中两点构成直角三角形
f3=norm([A(1,1)-O(1,1);A(2,1)-O(2,1);A(3,1)-O(3,1)])+norm([B(1,1)-O(1,1);B(2,1)-O(2,1);B(3,1)-O(3,1)])-norm([A(1,1)-B(1,1);A(2,1)-B(2,1);A(3,1)-B(3,1)]);%三点一线时,中间一点与两端点距离和等于两端点之间距离
f=[f1;f2;f3];
x0=x(1);
y0=x(2);
z0=x(3);
f=eval(f);
end
利用fsolve函数求解三点构建的坐标系的原点坐标
最新推荐文章于 2023-06-06 00:14:55 发布