首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何自动生成3到16个顶点统一的原始网格?

如何自动生成3到16个顶点统一的原始网格?
EN

Stack Overflow用户
提问于 2019-02-10 16:11:29
回答 1查看 411关注 0票数 0

现在我为自己生成网格(3,4,5点),我寻找顶点并生成网格。

我的问题是,我想生成这样的网格:https://en.wikipedia.org/wiki/Hexadecagon (下面是:15,14,13)。我不想每只手都这么做。有什么办法或诀窍,我怎么能用代码做到这一点呢?我使用了这个:https://github.com/CiaccoDavide/Unity-UI-Polygon,但是我不能添加对撞机并得到在那里生成的实际网格。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-11 18:40:40

你想把你的点放在一个单位的圆圈上,然后如果想要的话,就按比例缩放。

给定多个顶点>= 3,每个顶点之间的角为360/(顶点数)。

对于5个顶点,每个顶点必须相距72度。

现在,当开始角为0度时,对于每个顶点,x坐标是起始角的余弦,y坐标是起始角的正弦。在每个顶点之后,将您的起始角增加到上面所计算的角度.

下面是一些Matlab代码,它演示了我对包含13个顶点的多边形所讲的内容:

代码语言:javascript
运行
复制
num_verts = 13;

angle = 360/num_verts;

vertices = zeros(num_verts+1,2); % extra vertex just to plot the complete polygon
for ii=1:num_verts
    vertices(ii,1) = cosd(angle*ii);
    vertices(ii,2) = sind(angle*ii);
end
vertices(end,:) = vertices(1,:);

figure;
plot(vertices(:,1),vertices(:,2))
axis equal;

以及由此产生的多边形:

如果你想给你的多边形引入一些随机性,你可以用一些随机量旋转你的起始角,或者用一些随机量乘以你的最终坐标。

例如,我在这里创建了一个五角大楼,旋转了它,并对它进行了缩放。

代码语言:javascript
运行
复制
num_verts = 5;

angle = 360/num_verts;

vertices = zeros(num_verts+1,2); % extra vertex just to plot the complete polygon
rand_angle_shift = 360*rand();
for ii=1:num_verts
    vertices(ii,1) = cosd(angle*ii + rand_angle_shift);
    vertices(ii,2) = sind(angle*ii + rand_angle_shift);
end
vertices(end,:) = vertices(1,:);
vertices = vertices * 20;

figure;
plot(vertices(:,1),vertices(:,2))
axis equal;

您甚至可以将每个顶点乘以一个随机值,得到一个新的奇异(但有效)多边形:

代码语言:javascript
运行
复制
num_verts = 6;

angle = 360/num_verts;

vertices = zeros(num_verts+1,2); % extra vertex just to plot the complete polygon
rand_angle_shift = 360*rand();
for ii=1:num_verts
    vertices(ii,1) = cosd(angle*ii + rand_angle_shift);
    vertices(ii,2) = sind(angle*ii + rand_angle_shift);
end
vertices = vertices .* rand(num_verts+1,2);
vertices(end,:) = vertices(1,:);

figure;
plot(vertices(:,1),vertices(:,2))
axis equal;

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54618336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档