如何绘制坐标数据出现固体照明效果?

6视图(30天)
我有很微妙的问题。
在for循环我策划这些圈使用
plot3 (x, y, z)
后的迭代使这个身体的形状。
我到处寻找但有可能情节这些点看起来更像固体/表面与照明像下面的例子
问题是,通常这些表面将交叉自己的例子
所以我还需要设置不透明度产生的表面通过。
我不能提供任何数据,因为它们是巨大的,但我将gratefull类似的问题,因为我已经尽力了。

答案(2)

凯文·霍利
凯文·霍利 2021年10月1日
编辑:凯文·霍利 2021年10月1日
可能会有更好的方式去做。这是我的尝试:
x1 = 0;
x2 = 0;
日元=。8;%值基于25度角
y2 =。8;%值基于25度角
离心率=尾数就;
numPoints = 300;%不粗椭圆,更细的分辨率。
%使方程:
= (1/2)*√(x2 - x1) ^ 2 + (y2 - y1) ^ 2);
b = *√1-eccentricity ^ 2);
t = linspace(0, 2 *π,numPoints);%绝对角参数
X = a * cos (t);
Y = b * sin (t);
%计算角度相对于(x1, y1)。
角=量化(y2 - y1 x2 - x1);
x = (x1 + x2) / 2 + x * cos(角度)- Y * sin(角度);
y = (y1 + y2) / 2 + X * sin(角度)+ y * cos(角度);
次要情节(2、2、1)
plot3 (x, y, 0(大小(y)))
持有
plot3 (x, y, 0.5 *(大小(y)))
持有
plot3 (x, y,(大小(y)))
平等的
X = X [X];
Y = [Y Y Y];
Z =[0(大小(y)) 0.5 * 1(大小(y))的(大小(y))];
T = delaunayTriangulation (X, Y, Z);
%生成固体
次要情节(2 2 2)
% hObj = tetramesh (T)的(大小(T))、“FaceAlpha”, 0.5,“EdgeColor”,“没有”,“FaceLighting”,“冯氏”);
hObj = tetramesh (T)的(大小(T)),“FaceAlpha”,0.5,“EdgeColor”,“没有”,“FaceLighting”,“古尔戈”);
光(“位置”(10 -10 -10),“风格”,“本地”)
光(“位置”(-10 -10 -10),“风格”,“本地”)
次要情节(2,2,3)
% hObj = tetramesh (T)的(大小(T))、“FaceAlpha”, 0.5,“EdgeColor”,“没有”,“FaceLighting”,“冯氏”);
hObj = tetramesh (T)的(大小(T)),“FaceAlpha”,0.2,“EdgeColor”,“没有”,“FaceLighting”,“古尔戈”);
光(“位置”(10 -10 -10),“风格”,“本地”)
光(“位置”(-10 -10 -10),“风格”,“本地”)
次要情节(2,2,4)
% hObj = tetramesh (T)的(大小(T))、“FaceAlpha”, 0.5,“EdgeColor”,“没有”,“FaceLighting”,“冯氏”);
hObj = tetramesh (T)的(大小(T)),“FaceAlpha”,0.1,“EdgeColor”,“没有”,“FaceLighting”,“古尔戈”);
光(“位置”(10 -10 -10),“风格”,“本地”)
光(“位置”(-10 -10 -10),“风格”,“本地”)
1评论
简•菲利普
简•菲利普 2021年10月1日
谢谢你的尝试,但是这一次会失败的情况下以碰撞表面

登录置评。


凯利卡尼
凯利卡尼 2021年10月1日
下面的示例显示了一个相对简单的方法来创建补丁表面连接每个圆到邻近的一个(假设你所有的圈子里包含相同数量的顶点)。
%协调3简单的测试
nv = 50;
th = linspace(0, 2 *π,nv);
r = [10;5;6;8);
z = [0;1;2;1.5);
x = r。* cos (th);
y = r。* sin (th);
z = 0(大小(x)) + z;
x = x ';y = y ';z z = ';
%计算表面贴片坐标通过连接
%圆到邻近的一个
ncirc =大小(x, 2);
(c0, v0) = ndgrid (1: ncirc-1, 1: nv - 1);
cidx = c0 (:) + [0 1 1 0 0];
vidx = v0 (:) + (0 0 1 1 0);
idx = sub2ind(大小(x)、vidx cidx);
x = x (idx ');
y = y (idx ');
z = z (idx ');
%的阴谋
惠普=补丁(x, y, z,“b”);
视图(3);
集(惠普、“facealpha”,0.8,“edgecolor”,“没有”);
持有;
plot3 (x, y, z,“k”);
camlight
你可能要玩玩照明和透明度,但这应该是健壮的即使你圈重叠或逆转方向,为我展示了最后两个在这个例子。
2的评论
简•菲利普
简•菲利普 2021年10月2日
这的确是一种进步
但这种方法的问题是,照明实际上是没有看到因为圈子之间的步长(必须)小所以叫camplight在每个迭代中产生任何对整个“对象”。

登录置评。

类别

找到更多的在照明、透明度和阴影帮助中心文件交换

下载188bet金宝搏


释放

R2019a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!