MATLAB-空间曲面与直线求解交点坐标

MATLAB-空间曲面与直线求解交点坐标


背景

如何求解空间中曲面与直线的交点坐标?

已知空间中,曲面的方程以及直线的方程,例如:

  • 半球面: z = ( R 2 − x 2 − y 2 ) z = \sqrt(R^2-x^2-y^2) z=( R2x2y2)
  • 直线方程: x = 0 ; y = z x = 0; y=z x=0;y=z

在这个简单的例子中,我们易知其交点坐标为(当R=10时)
( 0 , 5 2 , 5 2 ) (0,5\sqrt2,5\sqrt2) (0,52 ,52 )
以下通过MATLAB来实现:


提示:以下是本篇文章正文内容,下面案例可供参考

一、方程及绘图

clc
clear

syms x y z
syms linex liney linez

R = 10;
A = sqrt(R^2-x^2-y^2)
fsurf(x,y,A,[-10 10 -10 10])
hold;
linex = 0;
liney = linez;
fsurf(linex,liney,linez,[-10 10 -10 10])
  • 对于纯符号表达式的图像绘图,需要使用 fsurffplot 之类的函数。
    其结果如下图所示:
    空间曲面与直线相交

二、求解交点坐标

  • 使用的函数主要是 solve
syms x y z
syms linex liney linez

R = 10;
A = sqrt(R^2-x^2-y^2)

eqn1 = z-A==0
eqn2 = [x==0,y==z]
[a b c] = solve([eqn1,eqn2],[x y z])

结果如下图所示:
交点结果

其他

1、限制变量范围

如果需要对求解值进行范围的限定,可以使用 assume 函数:
例如以下例子,x的解为 ±1,但在代码中限制只取小于0的解。

syms x y z
assume(x<0)

eqn1 = x^2-1==0
eqn2 = [y==0,y==z]
[a b c] = solve([eqn1,eqn2],[x y z])

结果如下:
1

2、引用其他函数求解

syms x y
syms Dx Dy Dz

R = 10;
WO = sqrt(R^2-x^2-y^2)

eqn1 = Dz - subs(WO,[x,y],[Dx,Dy]) == 0
eqn2 = [Dx == 0,Dy == Dz]

[a b c] = solve([eqn1,eqn2],[Dx Dy Dz])

结果正确
2

  • 21
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值