0001 function vrep = obtainVrep3d(choice, param)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 switch choice
0023
0024 case 'cube'
0025 vrep.V = [0 0 0;0 0 1;0 1 0;0 1 1;...
0026 1 0 0;1 0 1;1 1 0;1 1 1;];
0027 case 'sphere'
0028 if isempty(param), param=20;end
0029 vrep = obtainSphere(param);
0030 case 'ball'
0031 vrep = obtainSphere(param);
0032 case 'cone'
0033 if isempty(param), param=20;end
0034 vrep = obtainCircle(param);
0035 vrep.V(:,3) = 0;
0036 vrep.V(end+1,:) = [0 0 1];
0037 case 'pyramid'
0038
0039
0040 vrep = obtainVrep3d('cone', param);
0041 case 'bicone'
0042 if isempty(param), param=20;end
0043 vrep = obtainCircle(param);
0044 vrep.V(:,3) = 0;
0045 vrep.V(end+1,:) = [0 0 1];
0046 vrep.V(end+1,:) = [0 0 -1];
0047 case 'bipyramid'
0048
0049
0050 vrep = obtainVrep3d('bicone', param);
0051 case 'prism'
0052 vrep = obtainVrep2d('polygon', param);
0053 vrep.V(:,3) = 0;
0054 vrepMoved = moveVrep(vrep, [0 0 1]);
0055 vrep.V((end+1):(2*end),:) = vrepMoved.V;
0056 case 'antiprism'
0057 vrepBottom = obtainVrep2d('polygon', param);
0058 vrepTop = rotateVrep2d(vrepBottom, pi/param);
0059 vrepBottom.V(:,3) = 0;
0060 vrepTop.V(:,3) = 1;
0061 vrep.V = [vrepBottom.V; vrepTop.V];
0062
0063
0064 case 'ikosaprism'
0065 vrep = [1 0 0;-1 0 0;0 sqrt(3) 0;...
0066 0 0 1;-1 sqrt(3) 1;1 sqrt(3) 1];
0067 case 'mixCubeOctahedron'
0068 CUB = obtainVrep3d('prism',4);
0069 CUB = moveVrep(CUB, [0 0 -0.5]);
0070 CUB = stretchVrep(CUB, [1/sqrt(2) 1/sqrt(2) sqrt(2)], [0 0 0]);
0071 POLY = stretchVrep(obtainVrep2d('polygon',4), [1 1], [0 0]);
0072 POLY.V(:,3) = 0;
0073 POLY = rotateVrep3d(POLY, 'z', pi/4, [0 0 0]);
0074 vrep.V = [CUB.V;POLY.V];
0075
0076
0077 otherwise
0078 vrep = obtainVrep2d(choice, param);
0079
0080 vrep.V(:,3) = 0;
0081 end