You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

46 lines
1.3 KiB

%--------------------------
% @Author: Jingqiao Hu
% @Date: 2021-12-08 20:00:42
% @LastEditTime: 2021-12-11 20:22:12
% [t1,t2,t3, x, y, len, sin(theta)]
%--------------------------
function [MMCs, nc_local] = MMC_init_cvt(t, vnodes_cell, vedges_cell)
ncvt = size(vnodes_cell, 1);
nc_local = zeros(ncvt, 1);
MMCs = cell(ncvt, 1); % saves all properties, [t1,t2,t3,x, y, len, sin(theta)]
for ele = 1 : ncvt
nodes = vnodes_cell{ele};
edges = vedges_cell{ele};
nedges = size(edges, 1);
nc_local(ele) = nedges;
% the other props
nodes1 = nodes(edges(:, 1), :);
nodes2 = nodes(edges(:, 2), :);
nodes3 = (nodes1 + nodes2) / 2;
x = nodes3(:,1);
y = nodes3(:,2);
len = vecnorm(nodes2 - nodes1, 2, 2);
sina = abs(nodes2(:,2) - nodes1(:,2)) ./ len;
dir = (nodes2(:,2) < nodes1(:,2)) .* (nodes2(:,1) < nodes1(:,1)) + ...
(nodes2(:,2) > nodes1(:,2)) .* (nodes2(:,1) > nodes1(:,1));
sina(dir < 1) = -sina(dir < 1);
mmc_prop = zeros(nedges, 7);
mmc_prop(:, 1:3) = t;
mmc_prop(:, 4) = x;
mmc_prop(:, 5) = y;
mmc_prop(:, 6) = len/2;
mmc_prop(:, 7) = sina;
MMCs{ele} = mmc_prop;
end
end