我有以下几点做半圆柱体。
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;
%计算判别式
delta =B^2-4*A*C;
%检查溶液的存在性
如果delta<0点=零(0,3);返回;结束

如何得到直线与半圆柱的交点。
我正在寻找我的问题的matlab代码。或者一个链接
应该是什么
二阶方程系数% A=?B=??
请给我指点。
发布于 2013-01-04 22:32:34
抽象自matlab,它看起来是很简单的找到与任何线段的任何半cylynder.
线段可以参数化为
x_L = x_L0+( x_L1 - x_L0 )*t,其中t在0和1之间变化,x_L0和x_L1-端点( y,z相同)。
半cylynder可以用以下两个参数进行参数化:
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;https://stackoverflow.com/questions/14164199
复制相似问题