这个问题是下面发布的问题的3D版本: Find tangent points on a curve from a user-given point outside the curve
想象一下3D曲线外的一个点(x0,y0,z0)。切线平面覆盖曲线上的曲面,可以将其视为外部点源的阴影曲面。
3D表面由z方向上的多个切片(轮廓)组成。每个切片由(x,y)点组成。在一致性方面,3D曲线可以如下生成:
t = linspace(0,2*pi,100);
x1 = 10*cos(t) + sin(7*t);
y1 = 6*sin(t) + cos(13*t); % x1,y1 describe the first contour;
z1 = 0;
x2 = 5*cos(t) + 0.5*sin(7*t);
y2 = 3*sin(t) + 0.5*cos(13*t); % x2,y2 describe the first contour;
z2 = 1;
x3 = 20*cos(2*t) + 2*sin(t);
y3 = 12*sin(t) + 2*cos(13*t); % x2,y2 describe the first contour;
z3 = 2;
这可以针对不同的z值和x y轮廓继续。结果应该是每个z值的x,y点范围,看起来像3D曲线上的阴影。我不确定在3D情况下,凸包是否有用。有什么建议?非常感谢您的时间!
要清楚,下图是此问题的一个示例。它在z方向上具有8个轮廓,其中z1,z2,...,z8,每个轮廓包括一组(x,y)点(每个切片中的闭合轮廓)。设置外部点,切平面的结果将是覆盖3D曲线的圆锥。锥体的底部由每个轮廓中的一系列(x,y)点组成。