【发布时间】:2020-12-29 21:20:53
【问题描述】:
我想使用一些条件填充 3D 空间中的一个区域。
假设有这样一个向量:
x1 = 100;
y1 = 102;
z1 = 103;
P1 = [x1, y1, z1];
现在我想为P2 = [x2, y2, z2]; 的所有可能值指明空格,例如:
x2 < x1;
y2 < y1;
z2 < z1;
x1 - x2 < y1 - y2;
y1 - y2 < z1 - z2;
|angle between P1 and P2| < pi/20
我认为fill3 函数不会起作用。
我已尝试绘制所有可能的点,但速度很慢:
r1 = 100;
g1 = 102;
b1 = 103;
P1 = [r1, g1, b1];
for r2 = 0:0.1:r1
for g2 = 0:0.1:g1
for b2=0:0.1:b1
% calculate angle between two vectors
P2 = [r2, g2, b2];
a = abs(atan2(norm(cross(P1,P2)),dot(P1,P2)));
% draw point if conditions are true
if ((b1 - b2) < (g1 - g2)) && ((g1 - g2) <= (r1 - r2)) && (a < (pi/20))
scatter3(r2,g2,b2,5,'g');
hold on;
end
end
end
end
我如何应用这些条件并在 3D 空间中为所有可能的 P2 值填充该区域?
【问题讨论】:
标签: matlab plot 3d scatter-plot