-
大小: 131KB文件類型: .zip金幣: 2下載: 0 次發布日期: 2021-05-14
- 語言: Matlab
- 標簽: voronoi??computationa??
資源簡介
使用matlab生成了Voronoi圖,使用Delaunay三角形生成Voronoi圖。

代碼片段和文件信息
%本函數實現將相鄰三角形外接圓圓心相連
%對于沒有外接圓的邊,標記其中垂線射線(端點為接圓圓心)
function?triangles?=?buildLine(triangles?Xmax?Xmin?Ymax?Ymin)
Xmid?=?Xmin?+?(Xmax-Xmin)/2;
Ymid?=?Ymin?+?(Ymax-Ymin)/2;
[~?n]?=?size(triangles);
for?i?=?1:n
????triangles(i).neighborCircleCenters?=?[];
????if?size(triangles(i).neighbors?2)?~=?3
????????if?size(triangles(i).neighbors?2)?==?1
????????????center?=?triangleCircumCircle(triangles(triangles(i).neighbors(1)));
????????????center?=?center(1).center;
????????????triangles(i).neighborCircleCenters?=?[triangles(i).neighborCircleCenters;?center];
????????????%下面為中垂線射線
????????????tbl?=?tabulate(triangles(i).linindex(:));
????????????temp?=?find(tbl(:?2)?==?0);
????????????bian?=?[tbl(temp(1))?tbl(2?1);?tbl(temp(1))?tbl(3?1)];
????????????for?k?=?1:2
????????????????x11?=?triangles(i).list(bian(k?1)?1);
????????????????x21?=?triangles(i).list(bian(k?2)?1);
????????????????y11?=?triangles(i).list(bian(k?1)?2);
????????????????y21?=?triangles(i).list(bian(k?2)?2);
????????????????if?x11?????????????????????x1?=?x11?+?(x21-x11)/2;
????????????????????if?y11?????????????????????????y1?=?y11?+?(y21-y11)/2;
????????????????????else
????????????????????????y1?=?y21?+?(y11-y21)/2;
????????????????????end
????????????????else
????????????????????x1?=?x21?+?(x11-x21)/2;
????????????????????if?y11?????????????????????????y1?=?y11?+?(y21-y11)/2;
????????????????????else
????????????????????????y1=?y21?+?(y11-y21)/2;
????????????????????end
????????????????end
????????????????
????????????????x2?=?triangles(i).center(1);
????????????????y2?=?triangles(i).center(2);
????????????????
?????????????????????if?abs(x1?-?x2)?0.0000001
????????????????????x?=?x1;
????????????????????if?y1?>?Ymid
????????????????????????y?=?y1?+?1;
????????????????????else
????????????????????????y?=?y1?-?1;
????????????????????end
????????????????else
????????????????????if?x1?>?Xmid
????????????????????????x?=?x1?+?1;
????????????????????????y?=?(x-x1)?/?(x1-x2)?*?(y1-y2)?+?y1;
????????????????????else
????????????????????????x?=?x1?-?1;
????????????????????????y?=?(x-x1)?/?(x1-x2)?*?(y1-y2)?+?y1;
????????????????????end
????????????????end
????????????????
????????????????triangles(i).neighborCircleCenters?=?[triangles(i).neighborCircleCenters;?[x?y]];
????????????end
????????elseif?size(triangles(i).neighbors?2)?==?2
????????????for?j?=?1:2
????????????????center?=?triangleCircumCircle(triangles(triangles(i).neighbors(j)));
????????????????center?=?center(1).center;
????????????????triangles(i).neighborCircleCenters?=?[triangles(i).neighborCircleCenters;?center];
????????????end
????????????????%下面為中垂線射線
????????????????tbl?=?tabulate(triangles(i).linindex(:));
????????????????temp?=?find(tbl(:?2)?==?1);
????????????????bian?=?[tbl(temp(1)?1)?tbl(temp(2)?1)];
????????????????x11?=?triangles(i).list(bian(1)?1);
????????????????x21?=?triangles(i).list(bian(2)?1)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????5146??2018-12-10?20:48??buildLine.m
?????文件?????????550??2018-12-06?18:13??circumcircleBuilding.m
?????文件????????6367??2019-01-01?13:43??DT2.m
?????文件?????????993??2018-12-10?17:22??findNeighborTriangles.m
?????文件?????????198??2018-12-07?12:06??isInCircle.m
?????文件?????????453??2018-12-10?10:50??isInCircleRight.m
?????文件?????????936??2018-12-10?13:57??triangleCircumCircle.m
?????文件?????????291??2019-01-01?13:02??VD1.m
?????文件???????70549??2018-12-10?21:00??VD1結果圖.png
?????文件????????1306??2019-01-01?13:43??VD2.m
?????文件???????69816??2018-12-10?20:58??VD2結果圖.png
- 上一篇:將txt轉成voc數據集標準xm
lmatlab的 - 下一篇:ART算法代碼程序
評論
共有 條評論