如何绘制坐标数据出现固体照明效果?
6视图(30天)
显示旧的评论
答案(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),“风格”,“本地”)
凯利卡尼
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
你可能要玩玩照明和透明度,但这应该是健壮的即使你圈重叠或逆转方向,为我展示了最后两个在这个例子。