


create embedding unifying representation from decomposition Syntax: esDec = computeEmbeddingSimpleDec(dec) A new matrix of facet normals dec.A is calculated that contains all facets that could be created by adding structuring elements of the input decomposition. A matching group mapping matrix is also generated. The new decomposition would have a unified partitions, where all structuring elements of the input decomposition are extreme rays. Hence, any point represented in the input decomposition will reside at the boundary of the output decomposition (and unified partition) All data is transformed to the new decomposition. This decomposition is typically not complete (validity cone, unified paritions etc.). See also: obtainDec, projectDec


0001 function esDec = computeUnifyingDec(dec, zerotol) 0002 % create embedding unifying representation from decomposition 0003 % 0004 % Syntax: esDec = computeEmbeddingSimpleDec(dec) 0005 % 0006 % A new matrix of facet normals dec.A is calculated that contains all 0007 % facets that could be created by adding structuring elements of the 0008 % input decomposition. A matching group mapping matrix is also generated. 0009 % The new decomposition would have a unified partitions, where all 0010 % structuring elements of the input decomposition are extreme rays. 0011 % Hence, any point represented in the input decomposition will reside at 0012 % the boundary of the output decomposition (and unified partition) 0013 % 0014 % All data is transformed to the new decomposition. This decomposition is 0015 % typically not complete (validity cone, unified paritions etc.). 0016 % 0017 % See also: obtainDec, projectDec 0018 0019 % The elk-library: convex geometry applied to crystallization modeling. 0020 % Copyright (C) 2013 Alexander Reinhold 0021 % 0022 % This program is free software: you can redistribute it and/or modify it 0023 % under the terms of the GNU General Public License as published by the 0024 % Free Software Foundation, either version 3 of the License, or (at your 0025 % option) any later version. 0026 % 0027 % This program is distributed in the hope that it will be useful, but 0028 % WITHOUT ANY WARRANTY; without even the implied warranty of 0029 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0030 % General Public License for more details. 0031 % 0032 % You should have received a copy of the GNU General Public License along 0033 % with this program. If not, see <http://www.gnu.org/licenses/>. 0034 0035 %! ToDo: this function should be named computeExtendedEmbedding, now. This 0036 % also changes the name of the private function. 0037 0038 %% input handling 0039 if ~exist('zerotol', 'var') || isempty(zerotol) 0040 zerotol = elkZerotol; 0041 end 0042 if ~dec.isProper || ~dec.isOrdinary 0043 error('elk:decomposition:inputError', ['Handling of improper or ' ... 0044 'singular input data is not supported.']) 0045 end 0046 0047 % copy original data 0048 esDec.originalData = dec; 0049 0050 %% Extended H-representation 0051 % find additional facets from pairwise Minkowski addition of structuring 0052 % elements. This creates a new embedding H-representation. 0053 esDec.originalData.newFacetNormalMatrix = computeAdditionalFacetMatrix(... 0054 dec, zerotol); 0055 esDec.A = [dec.A; esDec.originalData.newFacetNormalMatrix]; 0056 esDec.nH = size(esDec.A, 1); 0057 0058 %% Extended Hc-representation 0059 % identify which subdomain is spanned by the structuring elements of the 0060 % original Hc-representation. We obtain a new Hc-representation that 0061 % might be called extended embedding (since it is not proper but will be 0062 % used as the embedding representation for an approximation). 0063 esDec = computeExtendedEmbedding(esDec, zerotol); 0064 % add mapping information 0065 esDec = addUnifyingMappingData(esDec); 0066 % assign measure information again (recomputation of al measures) 0067 esDec = recomputeMeasureData(esDec, esDec.originalData); 0068