繁体   English   中英

半圆柱线相交,MATLAB

[英]halfcylinder-Line intersection, matlab

我有以下几点要讲半圆柱。

p1 = [7.9463,-1.0200,-9.7586];  % start points(boundary)
pS = [9.1163,-1.0200,-9.5886];  % start points (middle)
p2 = [10.2863,-1.0200,-9.7586]; % start points(boundary)


p3 = [7.9463,-1.78,-9.7586]; % End points(boundary)
pE = [9.1163,-1.78,-9.5886]; % End points (middle)
p4 = [10.2863,-1.78,-9.7586]; % End points (boundary)

r=1.17

and line 
line_=[8,-1,-8,9,-8,-10]; %[P0,P1];

%%%%%%%部分采用的代码

在此处输入链接说明

% Starting point of the line
l0 = line_(1:3)';

% Direction vector of the line
dl = line_(4:6)'-line_(1:3)';

%气缸的起始位置

c0 = pS;

圆柱体的方向向量

dc = pE-PS;

圆柱半径%

r = 1.17;

计算判别百分比

增量= B ^ 2-4-* A * C;

%检查解决方案的存在

如果delta <0点=零(0,3); 返回; 结束

在此处输入图片说明

如何获得线半圆柱的交点。

我正在寻找问题的Matlab代码。 或链接

应该是什么

二阶方程的%系数

A = ??????????? B = ????????? C = ??????????

请提供任何指导。

从matlab抽象出来,看起来很容易找到任何半圆柱体与任何线段的交点...

线段可以参数化为

x_L = x_L0 +(x_L1-x_L0)* t,其中t在0和1之间变化,x_L0和x_L1-端点(与y,z相同)。

可以用两个参数来参数化半圆筒

z = z0 +(z1-z0)* u,u在0和1之间变化(x-x0)^ 2 +(y-y0)^ 2 = r ^ 2,y> 0(x0,y0-半圆的中心,z0,z1-范围,假设圆位于x,y平面中)

将x和y代入半圆的方程式可得出t的平方方程:(x_L0 +(x_L1-x_L0)* t-x0)^ 2 +(y_L0 +(y_L1-y_L0)* t-y0)^ 2 = r ^ 2因此:

    A = (x_L1-x_L0)^2+(y_L1-y_L0)^2;
    B = 2*(x_L0-x0)*(x_L1-x_L0)+2(y_L0-y0)*(y_L1-y_L0);
    C = (x_L0-x0)^2+(y_L1-y_L0)^2-r^2;
    D = B^2-4*A*C;
    if D <0
    %no solution
    else
    t(1) = (-B+sqrt(D))/2/A;
    t(2) = (-B-sqrt(D))/2/A;
    sol=nan(3,2);
    for i=1:2
    if t(i)>0 &&... 
t(i)<1 &&... 
y_L0+(y_L1-y_L0)*t(i)>0 &&... 
z_L0+(z_L1-z_L0)*t(i)>z0 &&... 
z_L0+(z_L1-z_L0)*t(i)<z1  
%solution is within interval of parametrization and y > 0, and z_intersectio nis between z0 and z1
    sol(1,i)=x_L0+(x_L1-x_L0)*t(i);
    sol(2,i)=y_L0+(y_L1-y_L0)*t(i);
    sol(3,i)=z_L0+(z_L1-z_L0)*t(i);
    end;
    end;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM