如何可视化两个三维场的交集?
我有以下功能
1. a * b *c∈[3,5]
2. a /(b * c)∈[80,100]
其中a,b,c∈[0,100]。
我已经找到了如何可视化减少的情况(两个表面的交点): 1.A * B * C = 5 2. a /(b * c)= 99
zlim = 1;
tol = 0.02; %define width of tube for proximity calculation
crop = @(z) max(min(z,zlim),-zlim); %limit domain
Cfun = @(x,y) crop(5./(x.*y)); % Apply domain limit to 'Cfun*x*y=5'
Dfun = @(x,y) crop(x./(99*y)); % Apply domain limit to 'x/(Dfun*y)=90'
t = 10:0.2:100;
[X,Y] = meshgrid(t,t);
C = Cfun(X,Y);
D = Dfun(X,Y);
S = NaN(size(C));
SI = abs(C-D) < tol*max(abs(C),abs(D)); % checks proximity of function values
S(SI) =max(C(SI),D(SI));
surf(X,Y,S,0.5*ones(size(S)),'EdgeColor','none','LineStyle','none','FaceLighting','phong');
%plot intersection line
我很高兴任何代码或提示!
答案 0 :(得分:1)
我建议使用分离轴定理。作为参考,请检查S. Gottschalk,M.C。 Lin,D。Manocha,OBBTree:快速干扰检测的分层结构,见:Proc。 SIGGRAPH,ACM,New York,NY,USA,1996,pp.171-180。它非常强大,我已成功地将它用于立方体和长方体之间的干涉检测,长方体以任意三维角度相交,以非常精确地计算两个物体之间的交叉体积。