1.如何求空间直线在某一平面上的投影直线方程

https://zhidao.baidu.com/question/631349383625570644.html

2. 知道平面一点和平面法向量如何求平面方程

https://zhidao.baidu.com/question/1176936423777863579.html

3 求空间直线和平面的交点

https://zhidao.baidu.com/question/1547238640427961907.html

4 已知空间两点,求直线方程

5.求解空间直线和圆柱的交点的两种方法

(1)先求空间直线与x-y平面的交点,然后求空间直线在x-y平面上的投影的方向向量,由交点和投影直线的方向向量可确定投影直线方程,进而计算直线和圆柱在x-y平面上的投影的2个交点,获得两个交点的x,y坐标,再将x,y带入直线方程求解出z,也就求解出了2个交点(圆柱的圆心已知,且平行于z轴)

%% 定义直线方程
syms x y z
% RayEqn = @(x,y,z)((x - SourcePosition(1))/(ChannelPosition(1) - SourcePosition(1)) - ...
%          (y - SourcePosition(2))/(ChannelPosition(2) - SourcePosition(2)) - ...
%          (z - SourcePosition(3))/(ChannelPosition(3) - SourcePosition(3)));CylinderEqn = (x - CylinderPosion(1)).^2 + (y - CylinderPosion(2)).^2 - R.^2 == 0;%% 求直线在x-y平面的投影直线方程
%直线和x-y平面的交点也是投影直线的交点,知道交点,知道投影直线的方向向量,就可以求出投影直线方程%求直线和x-y平面的交点
eqns = [...(x - SourcePosition(1))/(ChannelPosition(1) - SourcePosition(1)) - (y - SourcePosition(2))/(ChannelPosition(2) - SourcePosition(2)) ==0, ...(y - SourcePosition(2))/(ChannelPosition(2) - SourcePosition(2)) - (z - SourcePosition(3))/(ChannelPosition(3) - SourcePosition(3)) ==0, ...(x - 0) * 0 + (y - 0)*0 + (z - 0) * 1 == 0]; %平面方程,知道平面内一点以及平面的法向量
vars = [x y z];
[LinePlaneX ,LinePlaneY,LinePlaneZ] = vpasolve(eqns,vars);
LinePlaneJunction = [double(LinePlaneX) ,double(LinePlaneY),double(LinePlaneZ)];%直线的方向向量
v1 = SourcePosition - ChannelPosition;
%x-y平面法向量
n1 = [0,0,1];
%直线与其投影所在平面的法向量为
n2 = cross(v1 ,n1);
%直线的投影的方向向量为
v2 = cross(n1,n2);
if(v2(3) ~= 0)fprintf("FindLwLb : wrong ,the projection of the line is not in the x-y plane\n");
end
PrjRayEqn = (x - LinePlaneJunction(1)) / v2(1) - (y - LinePlaneJunction(2))/v2(2) == 0;
% PrjRayEqn = (x - LinePlaneJunction(1)) / v2(1) - (y - LinePlaneJunction(2))/v2(2) - (z - LinePlaneJunction(3))/v2(3) == 0;%% 求投影直线和x-y平面上圆面的交点坐标
eqns2 = [ PrjRayEqn,CylinderEqn];
vars = [x y];
[CylindeRayJunctionX ,CylindeRayJunctionY]= solve(eqns2,vars,[-250,250;-250,250 ;-250,250]);    CylindeRayJunctionX = double(CylindeRayJunctionX);
CylindeRayJunctionY = double(CylindeRayJunctionY);if(isempty(CylindeRayJunctionX) || length(CylindeRayJunctionX) == 1|| ...isempty(CylindeRayJunctionY) || length(CylindeRayJunctionY) == 1)Distance = 0;
elseif(length(CylindeRayJunctionX) == 2 && length(CylindeRayJunctionY) == 2)RayEqn = (CylindeRayJunctionX(1) - SourcePosition(1))/(ChannelPosition(1) - SourcePosition(1)) - ...(CylindeRayJunctionY(1) - SourcePosition(2))/(ChannelPosition(2) - SourcePosition(2)) - ...(z - SourcePosition(3))/(ChannelPosition(3) - SourcePosition(3)) == 0;CylindeRayJunctionZ1 = vpasolve(RayEqn,z);   point1 = [CylindeRayJunctionX(1),CylindeRayJunctionY(1), CylindeRayJunctionZ1];RayEqn2 = (CylindeRayJunctionX(2) - SourcePosition(1))/(ChannelPosition(1) - SourcePosition(1)) - ...(CylindeRayJunctionY(2) - SourcePosition(2))/(ChannelPosition(2) - SourcePosition(2)) - ...(z - SourcePosition(3))/(ChannelPosition(3) - SourcePosition(3)) == 0;CylindeRayJunctionZ2 = vpasolve(RayEqn2,z);    point2 = [CylindeRayJunctionX(2),CylindeRayJunctionY(2), CylindeRayJunctionZ2];Distance = sqrt(sum((double(point1) -double( point2)) .^2));
elsefprintf("FindLwLb :wrong Distance \n");
end

(2).直接由已知的直线的方程,拆分成x和y的一个方程以及y和z的一个方程,联力圆柱的一个切面方程,三个方程,求解3个未知数,直接求出两个交点

%% 定义直线方程
syms x y z%% 求直线和圆柱的交点
%直线和x-y平面的交点也是投影直线的交点,知道交点,知道投影直线的方向向量,就可以求出投影直线方程
%求直线和x-y平面的交点
eqns = [...(x - SourcePosition(1))/(ChannelPosition(1) - SourcePosition(1)) - (y - SourcePosition(2))/(ChannelPosition(2) - SourcePosition(2)) ==0, ...(y - SourcePosition(2))/(ChannelPosition(2) - SourcePosition(2)) - (z - SourcePosition(3))/(ChannelPosition(3) - SourcePosition(3)) ==0, ...(x - CylinderPosion(1)).^2 + (y - CylinderPosion(2)).^2 - R.^2 == 0 ...]; %平面方程,知道平面内一点以及平面的法向量
vars = [x y z];
[CylindeRayJunctionX ,CylindeRayJunctionY,CylindeRayJunctionZ] = vpasolve(eqns,vars,[-250,250;-250,250 ;-250,250]);         % % % % eqn1 = (x - SourcePosition(1))/(ChannelPosition(1) - SourcePosition(1)) - (y - SourcePosition(2))/(ChannelPosition(2) - SourcePosition(2));
% % % % eqn2 = (y - SourcePosition(2))/(ChannelPosition(2) - SourcePosition(2)) - (z - SourcePosition(3))/(ChannelPosition(3) - SourcePosition(3));
% % % % eqn3 = (x - CylinderPosion(1)).^2 + (y - CylinderPosion(2)).^2 - R.^2 ;
% % % % [a,b,c] = solve(eqn1 ==0 ,eqn2 == 0, eqn3 == 0,[x,y,z]);if(isempty(CylindeRayJunctionX) || length(CylindeRayJunctionX) == 1|| ...isempty(CylindeRayJunctionY) || length(CylindeRayJunctionY) == 1|| ...isempty(CylindeRayJunctionZ) || length(CylindeRayJunctionZ) == 1)Distance = 0;
elseif(length(CylindeRayJunctionX) == 2 &&...length(CylindeRayJunctionY) == 2 && ...length(CylindeRayJunctionZ) == 2)point1 = [double(CylindeRayJunctionX(1)),double(CylindeRayJunctionY(1)),double(CylindeRayJunctionZ(1))];point2 = [double(CylindeRayJunctionX(2)),double(CylindeRayJunctionY(2)),double(CylindeRayJunctionZ(2))];Distance = sqrt(sum((point1 - point2) .^2));
elsefprintf("FindLwLb :wrong Distance \n");
end

6 solve fslove 等matlab解方程函数,求解结果出现虚数

可能原因是没有限定解空间的范围

7 已知两个向量,求向量的夹角

8 已知2个点,求向量

空间直线和三维物体之间的交线相关问题相关推荐

  1. 机械臂控制软件,上位机软件 此机器人上位软件。 运动采用通用G代码指令编程,具有G5三维的空间圆弧插补,空间直线插补功能

    机械臂控制软件,上位机软件 此机器人上位软件. 运动采用通用G代码指令编程,具有G5三维的空间圆弧插补,空间直线插补功能,子程序编程功能,逻辑判断语句功能,示教编程功能(支持手柄),变量位置编程功能, ...

  2. 【C++】【Ctrl+CV即可食用】三维点拟合空间直线

    前景概述 网上三维点拟合空间直线的代码很多 大多数都是python或者matlab 这里贴一个C++的代码 原目的是拟合出直线之后任取两个点手动计算一下斜率 数学原理 最小二乘拟合直线方程: x−x0 ...

  3. matlab中如何转动三维图_MATLAB小技巧之:绕任意空间轴旋转三维图形

    x=1:0.1:10; y=sin(x); c=cosd(15); s=sind(15); X=x*c-y*s; Y=x*s+y*c; plot(x,y) hold on plot(X,Y) 这就是新 ...

  4. 解析几何:第四章 空间中的直线与平面(1)空间直线的方向、平面方程、空间直线方程

    §1 空间直线的方向 1. 方向角 通过原点O的直线OM与三条坐标轴的夹角α,β,γ称为该直线的方向角 即: α=∠MOX,β=∠MOY,γ=∠MOZ 2. 方向余弦 直线方向角的余弦称为方向余弦. ...

  5. pcl::lineToLineSegment() 计算空间直线的交点和最小公垂线

    对于两空间直线来说,计算交点和最小公垂线是一码事,交点即最小公垂线两个垂足的中心.PCL中源码中包含计算空间直线最小公垂线的函数 PCL_EXPORTS void pcl::lineToLineSeg ...

  6. 0804空间直线及其方程-向量代数与空间解析几何

    文章目录 1 空间直线方程 1.1 空间直线的一般方程 1.2 空间直线的对称式方程 1.3 空间直线的参数方程 1.4 空间直线的两点式方程 3 两直线的夹角 4 直线与平面的夹角 4.1 定义 4 ...

  7. 【转载】空间直线同任意形状椭球交点

    空间直线同空间中三维椭球相交,其交点即为空间直线方程同椭球方程的解,对于空间直线方程,只要知道两点空间坐标即可,而欧拉角不为零的三维椭球方程则较难描述,但可以考虑对椭球进行变换,使其欧拉角为零,进而转 ...

  8. 8.4 向量应用(二)——空间直线

    本篇内容接上篇,还是关于向量应用的内容.没有废话,直接来. 空间直线方程 (一)点向式方程(对称式方程) 从名字上看,点向式两个关键,一个是点,一个是向,点是直线上一点,向是直线的方向,或者是和直线方 ...

  9. 【高等数学】通过俩条空间直线求得公垂线的求法

    1. 先利用俩空间直线的方向向量通过向量积求得其公垂线的方向向量 2. 求出过空间直线L1及公垂线的平面 因为是过公垂线的平面,所以它与直线L1的方向向量垂直,与公垂线的方向向量也垂直. 即利用向量积 ...

最新文章

  1. HDU-1268 找新朋友 (素数筛选)
  2. 南方电网两栖机器人_探访国内最大5G智能电网应用区:5G机器人已替代人工巡检...
  3. iphone桌面上的圆圈怎么设置_苹果手机桌面上找不到便签记事本怎么办?有办法添加吗...
  4. 使用Fiddler为满足某些特定格式的网络请求返回mock响应
  5. 51单片机流水灯用c语言,51单片机之流水灯(C语言和汇编两个版本)
  6. 为什么诸多顶级期刊论文中的观点也不靠谱?
  7. CoffeeScript、TypeScript 、 JavaScript 之间
  8. 深入理解jvm虚拟机笔记
  9. STM32H7+USB3300+SD作为U盘速度慢的问题
  10. 27年台湾珍珠鲜奶茶品牌Sharetea将引进上海
  11. Domino M-Series 设置说明
  12. P2690 [USACO04NOV]Apple Catching G
  13. 【FLink】Assigned key must not be null
  14. 真无线蓝牙耳机什么便宜好用?五款口碑好的真无线蓝牙耳机
  15. 期望、方差、协方差、协方差函数、期望函数、方差函数
  16. MAC添加受信任证书
  17. java获取PDF页面长宽
  18. 江苏计算机一级考试模拟试题,2016年江苏计算机一级考试试题.doc
  19. matlab自定义函数实现灰度图像均值滤波
  20. C语言-小明小强扔石头

热门文章

  1. 三点布光材质连接,做旧
  2. css 语音,CSS3新特性一览-- 语音
  3. r910服务器增加内存,dellr910服务器硬件手册及安装方法
  4. win10 删除文件好慢解决方法
  5. CSS / 三大特性+盒子模型+PS基础
  6. 如何设计报表?手把手教你5步轻松制作报表
  7. 朴素贝叶斯的概念简介
  8. 研究生真正需要培养的五大能力
  9. Dubbo监控中心的介绍与安装
  10. 网页默认打印:fixed布局的内容会在每页打印,遮挡其他内容