瓢虫几何是一个python库,包含瓢虫工具核心库所需的所有基本几何计算。
ladybug-geometr的Python项目详细描述
瓢虫几何学
瓢虫几何是一个python库,其中包含了瓢虫工具核心库中使用的几何对象。
API文档
此库的原因
我们最初讨论的是几何计算应该主要放在CAD插件上还是 是否应该包含在核心中。当我们开发出核心库时 把它放在核心有很大的优势(即 CAD插件,能够处理来自命令行的更多输入,以及剪切速度 因为cad库是用来处理比通常需要的更多的几何用例的。 因此,我们决定将几何计算作为瓢虫工具核心的一部分。
我们研究了使用其他几何计算库作为核心,包括:
然而,rhino3dm缺乏核心所需的基本计算类型(如生成 曲面上的点网格)。 此外,Blender库只在Python3中工作,这将破坏我们的工作流 蚱蜢和发电机插件,在那里依赖铁蟒。 拓扑学似乎有很多我们需要的东西,但是它似乎有c依赖关系,使得 它无法从ironpython中使用。此外,它的双重许可证可能会给某些 瓢虫工具的用例。
在进一步考虑之后,我们意识到我们需要的许多计算是可以完成的 只要几何体是平面的就很容易了。因为所有的几何体都会进入引擎(弧度,e+) 最终转换为平面格式,我们决定核心库将支持 仅用于平面对象的某些基本几何计算类型。我们PL通过采取 现有开放源代码几何库的大多数相关部分,包括euclid 还有OpenStudio。于是这个仓库诞生了!
对于这个库,我们可以从以前的开源库中借用一些数学知识 上面列出了Rhino3DM和Blender,以及其他类似的项目 此Radiance网格生成博士学位 建立TIS核心库。
属于或将属于此库的内容
(我们可以在纯python中轻松完成)
- [X]VectorMath(已存在于瓢虫核心中)
- [X]计算边界框(已存在于蝴蝶核中)
- [X]计算三角形+四边形区域、中心点+法线(部分存在于蝴蝶核中)
- [X]计算平面几何图形的面积+周长(应该可以使用此公式)
- [X]检查二维几何图形的凹度(已存在于Legacy中查找非凸面组件)
- [X]将凹面二维几何图形转换为凸面几何图形(应该可以使用耳剪裁方法)
- [X]三角剖分平面几何(可以通过将凸几何体转换为凹几何体并使用扇形三角剖分来实现)
- [X]移动几何体(可从Rhino3dm获取)
- [X]围绕基点旋转几何图形(可从Rhino3dm获取)
- [X]镜像几何体(可从Rhino3dm获取)
- [X]从基点缩放几何图形(可从Rhino3dm获取)
- [X]是二维多边形内的点(从本例中的看起来非常简单)
- [X]平面网格生成(如本文所述,它使用边界框并指向内部)
- [X]基于比率的嵌装玻璃(目前在Legacy中实施基于比率组件的嵌装玻璃)
- [X]求解邻接(可以通过良好的几何等价性测试)
- [X]从面生成百叶窗、翅片和悬挑。挤出从已实现的face3d.intersect_plane方法生成的相交线段应该很容易。
- [X]检查三维多面体是否关闭(应该可以通过创建三维三角网格来实现)
- [X]确保实体多面的所有面都朝外(可以使用当前方法的三维版本来检查点是否在多边形内)。基本上,使用面法线从面中心拍摄光线,并确保光线与多面中的0个或偶数个其他面相交)
- [X]检查一个点是否在一个封闭的3D几何结构内(对于热舒适性研究非常有用网格中的ts必须与区域结果相匹配(应该可以通过检查面是否朝外的函数的变化来实现,除非我们使用问题点作为所拍摄光线的原点)
- []直骨架方法(当前在传统核心/周长组件中实现,但应扩展为接受凹形几何体)
- []平面的偏移边曲线(可以通过沿直线骨架平移顶点来生成"波前")
应该是这个库的一部分的内容
(我们认为我们可以做到,但他们需要一些专业知识)
- []创建匹配的分区曲面(曲面彼此相交)。openstudio提供了一些方法,如@saeranv在这里所示
- []曲线布尔(curve boolean)一组二维曲线(用于查找一组热多边形的外部边界、从楼层曲线计算建筑占地面积等)。应该可以在这里使用此方法
我们将依赖于CAD界面的功能:
- 曲面到平面的转换(理想情况下,使用处理单曲率与处理双曲率不同的方法)
- 实数布尔联合(在瓢虫工具中,我们可能不需要这个就可以了)