[发明专利]基于SketchUp ruby的图形面积与形心算法在审
申请号: | 201910066525.8 | 申请日: | 2019-01-24 |
公开(公告)号: | CN109948178A | 公开(公告)日: | 2019-06-28 |
发明(设计)人: | 丁炜杰;叶笛;朱松;胡世南;卢寅 | 申请(专利权)人: | 中船第九设计研究院工程有限公司 |
主分类号: | G06F17/50 | 分类号: | G06F17/50;G06F17/10 |
代理公司: | 上海宣宜专利代理事务所(普通合伙) 31288 | 代理人: | 刘君 |
地址: | 200063 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 心算 形心 顶点坐标 汇总计算 模型文件 人工操作 图形处理 内轮廓 外轮廓 误操作 再利用 面片 绘制 转换 分析 | ||
1.一种基于SketchUp ruby的图形面积与形心算法,其特征在于,按照如下步骤进行:
1)分析SketchUp模型中准备计算的面片的顶点数量N,以及提取所有顶点的坐标P(x,y,z);
2)分析面片的所有顶点构成的闭环数量L,L≥1,其中外轮廓闭环数量为1,内轮廓闭环数量为L-1;
3)分析面片的外轮廓所构成的n边形的凹凸属性,然后将n边形按顶点划分成n-2个三角形,分别计算这(n-2)三角形面积与形心坐标,计算面片外轮廓所构成的n边形的面积与形心坐标;
4)判断L是否等于1,若L等于1,则转至步骤6);若L大于1,则转至步骤5);
5)分析面片的1个内轮廓闭环所构成的nx边形的凹凸属性,然后将nx边形按顶点划分成nx-2个三角形,分别计算这nx-2三角形面积与形心坐标;计算得到面片的1个内轮廓闭环所构成的nx边形的面积与形心坐标;重复计算单个内轮廓闭环构成的nx边形的面积与形心坐标,直至面片所包含的所有内轮廓闭环所构成的nx边形的面积与形心坐标均计算完毕;
6)根据步骤3)~5)的计算结果,综合外轮廓和内轮廓的面积与形心坐标计算结果,计算得到面片最终的面积与形心坐标。
2.根据权利要求1所述的基于SketchUp ruby的图形面积与形心算法,其特征在于,所述步骤1)的实现步骤如下:
a、通过调用SketchUp ruby的“entity.typename”来遍历并判断模型中的所有元素的类型是否为面片,
统计模型的面片数量为m;
b、通过调用SketchUp ruby的“vertices.length”来统计模型中的各个面片的顶点数量n;
c、通过调用SketchUp ruby的“vertices.position”来获取模型中的面片的顶点坐标P(x,y,z)。
3.根据权利要求1所述的基于SketchUp ruby的图形面积与形心算法,其特征在于,所述步骤2)的实现步骤如下:
a、遍历面片的所有顶点,通过调用SketchUp ruby的“vertice.common_edge”来判断两个顶点是否相连;连续相连的顶点构成独立的闭环,不相连的顶点为新的独立的闭环的起始顶点,对闭环的数量L进行计数;
b、判断闭环数量L,当L=1时,代表图形仅有一个外轮廓,是实心形状,;当L≥2时,代表图形中间有L-1个内轮廓,是中空形状。
4.根据权利要求1所述的基于SketchUp ruby的图形面积与形心算法,其特征在于,所述步骤3)的实现步骤如下:
a、从面片外轮廓的n个顶点中选择3个顶点构成三角形,共选择n-2次,第1次选择序号为1、2、3的顶点,第2次选择序号为1、3、4的顶点,第3次选择序号为1、4、5的顶点……第n-2次选择序号为1、n-1、n的顶点;
b、根据n-2个三角形中的每一个三角形的三个顶点的坐标P(x,y,z),判断每三个顶点构成的三个矢量的夹角,判断每个三角形的凹凸属性;根据顶点坐标分别计算这n-2个三角形面积与形心坐标;保持凸属性的三角形面积为正数,凹属性的三角形面积乘以-1转换为负数;
c、根据n-2个三角形的面积与形心坐标计算结果,计算面片的外轮廓所构成的n边形的面积与形心坐标。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中船第九设计研究院工程有限公司,未经中船第九设计研究院工程有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910066525.8/1.html,转载请声明来源钻瓜专利网。