[英]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.