- in your function you return the values of x,y
- function [x, y, dt] = simple_polygon(numSides,numpoly)
- the array values are stored in valueOfX,valueOfY
- So you need to change your function like-----> function [valueOfX, valueOfY, dt] = simple_polygon(numSides,numpoly)
How to store the array in a for loop?
    3 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    SUSHMA MB
      
 el 23 de Nov. de 2015
  
    
    
    
    
    Comentada: SUSHMA MB
      
 el 24 de Nov. de 2015
            I have written a code as mentioned below, its a for loop in which i want to store the array of each polygon, but im only able to save the last polygon values.
function [x, y, dt] = simple_polygon(numSides,numpoly)
  if numSides < 3
      x = [];
      y = [];
      dt = DelaunayTri();
      return
  end
    oldState = warning('off', 'MATLAB:TriRep:PtsNotInTriWarnId');
    valueOfX = zeros(100,100);
    valueOfY = zeros(100,100);
    figure
for i = 1 : numpoly
    fudge = ceil(numSides/10);
    x = rand(numSides+fudge, 1);
    y = rand(numSides+fudge, 1);
    dt = DelaunayTri(x, y);
    boundaryEdges = freeBoundary(dt);
    numEdges = size(boundaryEdges, 1);
    while numEdges ~= numSides
        if numEdges > numSides
            triIndex = vertexAttachments(dt, boundaryEdges(:,1));
            triIndex = triIndex(randperm(numel(triIndex)));
            keep = (cellfun('size', triIndex, 2) ~= 1);
        end
        if (numEdges < numSides) || all(keep)
            triIndex = edgeAttachments(dt, boundaryEdges);
            triIndex = triIndex(randperm(numel(triIndex)));
            triPoints = dt([triIndex{:}], :);
            keep = all(ismember(triPoints, boundaryEdges(:,1)), 2);
        end
        if all(keep)
            warning('Couldn''t achieve desired number of sides!');
            break
        end
        triPoints = dt.Triangulation;
        triPoints(triIndex{find(~keep, 1)}, :) = [];
        dt = TriRep(triPoints, x, y);
        boundaryEdges = freeBoundary(dt);
        numEdges = size(boundaryEdges, 1);
    end       
    boundaryEdges = [boundaryEdges(:,1); boundaryEdges(1,1)];
    x = dt.X(boundaryEdges, 1);
    y = dt.X(boundaryEdges, 2);
    valueOfX(i) = x;
    valueOfY(i)= y;
    warning(oldState);
    hold all
 patch(x,y,'r-')
end
end
In the code, in "valueofX and valueofY", i tried to store the array, but its showing error. Please help me to store the array for each polygon.
0 comentarios
Respuesta aceptada
  Stalin Samuel
      
 el 23 de Nov. de 2015
        
      Editada: Stalin Samuel
      
 el 23 de Nov. de 2015
  
      7 comentarios
Más respuestas (0)
Ver también
Categorías
				Más información sobre Computational Geometry en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

