How to map subdivisions in a squared geometry

1 次查看(过去 30 天)
I have a geometry of a square with 4 edges. Each edge has 5 points and 4 cells (subdivisons). The image bellow illustrates it.
If I have a line going from, say cell(1), Ind(1), Edge(1), I want to define all its possible intersections with the rest of the cells in the remaining 3 edges. So, for example, a line going from cell(1), Ind(1), Edge(1), can intersect with cells of indices 5, 6, 7 ,...., 16. And then, do the same for the next cell. And so on so forth. Each cell has three possible edges to intersect with one of their cells.
This is my attempt of the code.
%set up the vertices' coordinates of the polygon (square in our case)
sx = [0 1 1 0];
sy = [0 0 1 1];
%Define the number of vertices
NVert = length(sx);
%go through the sides and compute their lengths
for j = 1:NVert %side
jp = j+1; %next side
if (jp > NVert)
jp = jp - NVert;
end
%compute the edge lengths (unit length)
SL(j) = sqrt((sx(j)-sx(jp))^2+(sy(j)-sy(jp))^2);
%number of points on each side/edge
nPoint(j) = round(SL(j)/ds);
%cumalative number of points
cPoint(j) = sum(nPoint(1:j));
%number of subdivisions/pixels/blocks/cells
nSubDiv(j) = nPoint(j) - 1;
%cumalative number of subdivisions/pixels/blocks/cells
cSubDiv(j) = sum(nSubDiv(1:j));
end
for j = 1:NVert %a loop over all the edges/vertices
for i = 1:nPoint(j) %a loop over the number of points each edge
%points index
pInd(i,j) = nPoint(1)*(j-1)+i;
end
for k = 1:nSubDiv(j)
%subdivisions index
sInd(k,j) = nSubDiv(1)*(j-1)+k;
end
end
%reshape the point index matrix into a vector
pInd = reshape(pInd(:,:),ns,1);
%reshape the cell index matrix into a vector
sInd = reshape(sInd(:,:),nSubDiv(1)*nSubDiv(1),1);
%edges mappings (here where I need help.)
for j = 1:NVert %a loop over all the edges/vertices
for i = 1:nSubDiv(j) %a loop over the number of subdivisions each edge
%Each cell has three possible edges to intersect with one of their cells.
end
end
Any help would be appreicted.
Thanks.

回答(2 个)

KSSV
KSSV 2021-7-19
x = 1:5 ;
y = 1:5 ;
[X,Y] = meshgrid(x,y) ;
X(3,3) = NaN ; Y(3,3) = NaN ;
plot(X,Y,'r',X',Y','r')
  2 个评论
Lama Hamadeh
Lama Hamadeh 2021-7-19
Thanks for the effort. However, my problem is not with how to plot the geometry. It is basically how to determine the main possibilites each block (or cell) has when mapping to other edges/cells.
Lama Hamadeh
Lama Hamadeh 2021-7-19
In other words, how can say "for any given cell on a given edge, here are the follwoing of possibilites of cells to look at (or map with)"? Bearing in mind that each cell is allowed to be mapped to cells on edges different of its edge., hence, each cell has three different edges (with their cells) as possible options.

请先登录,再进行评论。


Matt J
Matt J 2021-7-19
I can't tell from your code what the rules are that determine which cells are connected to or interact with other cells. However, you probably want to express the relation ship through a graph object:

类别

Help CenterFile Exchange 中查找有关 Surface and Mesh Plots 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by