Fork me on GitHub

空间几何体的直观图matlab

 1 function B = transformation(A)
 2 sqrt2=1.414;
 3 n=size(A,1);
 4 B=zeros(n,2);
 5 B(:,1)=A*[-sqrt2/4,1,0]';
 6 B(:,2)=A*[-sqrt2/4,0,1]';
 7 
 8 bmin=min(min(B(:,1),B(:,2)));
 9 
10 if bmin < 0
11     B = B - bmin;
12 end
13 
14 
15 p=max(max(B)-min(B));
16 k=300/p;
17 B=k*B;
18 B(:,2)=300-B(:,2);
19 
20 
21 B=B+10;
22 
23 sprintf('%.0f ',B')
24 
25 zimu = ["a","b","c","d", "e" , "f" "g" "h"];
26 calptal = ["A","B","C","D", "E" , "F" "G" "H"];
27 
28 for m =1:n
29 fprintf('circle.move( name="%s"', zimu(m));
30 fprintf(' cx=%3.0f',B(m,1));
31 fprintf(' cy=%3.0f',B(m,2));
32 fprintf(' label="%s")\n', calptal(m))
33 end
34 
35 end
36 %A=[0,0,0; 0,4,0;-4,4,0;-4,0,0; 0,0,4; 0,4,4;-4,4,4;-4,0,4]
37 %
38 % 2020-2-29 A=[A;A';B;B';C;Cp;D;Dp];
39 % A=[18,0,0;18,23,0;0,23,0;0,0,0;18,0,23;18,23,23;0,23,23;0,0,23];
40 % B = transformation(A);

  320*320的画布;10边框宽度

 1 >> A=[18,0,0;18,23,0;0,23,0;0,0,0;18,0,23;18,23,23;0,23,23;0,0,23];
 2 >> B = transformation(A);
 3 
 4 ans =
 5 
 6     '10 310 245 310 310 245 75 245 10 75 245 75 310 10 75 10 '
 7 
 8 circle.move( name="a" cx= 10 cy=310 label="A")
 9 circle.move( name="b" cx=245 cy=310 label="B")
10 circle.move( name="c" cx=310 cy=245 label="C")
11 circle.move( name="d" cx= 75 cy=245 label="D")
12 circle.move( name="e" cx= 10 cy= 75 label="E")
13 circle.move( name="f" cx=245 cy= 75 label="F")
14 circle.move( name="g" cx=310 cy= 10 label="G")
15 circle.move( name="h" cx= 75 cy= 10 label="H")

 

posted @ 2020-03-01 17:28  小奔奔  阅读(293)  评论(0编辑  收藏  举报