xtorcga 3D 计算几何算法库开源项目

我要开发同款
匿名用户2020年04月27日
64阅读
开发技术JavaScriptHTML/CSS
所属分类数学计算、程序开发
授权协议MIT

作品详情

JavaScript实现计算机几何算法库,实现比如像距离、相交、包含、偏移、平行垂直判断、正负位置等算法。 演示地址

案例:

文档与演示(国内镜像)网速快

文档与演示(github)

点与其他元素的距离https://dcgraph.gitee.io/xtorcga/guide/distPointAll.html

线与其他元素的距离https://dcgraph.gitee.io/xtorcga/guide/distLineAll.html

射线与其他元素的距离https://dcgraph.gitee.io/xtorcga/guide/distRayAll.html

线段与其他元素的距离https://dcgraph.gitee.io/xtorcga/guide/distSegmentAll.html

常用https://yszhao91.github.io/xtorcga/guide/%E5%B8%B8%E7%94%A8.html

使用全部引用;:import*ascgafrom"xtorcga";functionrandomV3(){returncga.v3(Math.random()*100-50,Math.random()*100,Math.random()*100-50);}varpoint=newcga.Point().copy(randomV3());varseg=newcga.Segment(randomV3(),randomV3());varresult=point.distanceSegment(seg);按需求引用:import{v3,Point,Segment}from"xtorcga";functionrandomV3(){returnv3(Math.random()*100-50,Math.random()*100,Math.random()*100-50);}varpoint=newPoint().copy(randomV3());varseg=newSegment(randomV3(),randomV3());varresult=point.distanceSegment(seg);网页嵌入:直接下载使用build目录下面的cga.js,包含到项目中<scriptsrc="cga.js"/>或者<scriptsrc="https://raw.githack.com/yszhao91/xtorcga/master/build/cga.js"/><script>varpoint=newcga.Point(1,2,3);varline=newcga.Line(newcga.Vector3(10,10,20),newcga.Vector3(20,15,10));varresult=point.distanceLine(line);</script>项目编译npminstall国内cnpminstallnpmrunbuild//编译到build目录下npmrundev//运行项目,自己更改源码测试对象的类名点:Point直线:Line射线:Ray线段:Segment圆圈:Circle平面:Plane三角形:Triangle矩形:Rectangle圆盘:Disk球体:Sphere胶囊体: Capsule包围盒:Box已经实现算法在同一平面点集的凸包

已完成

varconvexHull=newConvexHull(points,{planeNormal:cga.Vector3.UnitZ});varhull=convexHull.hull;3d凸包

进行中

同一平面点集delauny三角网构建

进行中

3d点集delauny四面体构建

进行中

同一平面voronoi图构建

进行中

3dvoronoi图构建

进行中

最近点对问题

点集合中最近找出距离最近的一对点算法时间O(nlogn)

进行中

折线或者路径简化折线或者路径中过密或者过直的点去除;(2020年1月17增加)/***简化点集数组,折线,路径*@param{*}points点集数组,折线,路径,继承Array*@param{*}maxDistance简化最大距离默认值0.1*@param{*}maxAngle简化最大角度弧度默认值Math.PI/180*5*/simplifyPointList(points,maxDistance,maxAngle);距离

一级目录与二级目录存在相应距离算法关系

PointPointLineRaySegmentCirclePlaneTriangleRectangleDiskSphereCapsuleLineLineRaySegmentTriangle(2020年1月17增加)RayRaySegmentTriangle(2020年1月17增加)SegmentSegment相交

相交可以使用距离算法来实现,准确的说距离中的closets最近点在distance为0(小于1e-4,精度可以自定义)的时候也就是交点,parameters表为0或1可以判断为端点相交

偏移Segment切割SegmentSegmentPlaneSegmentTriangle参考文章

计算机几何算法(CGA)专栏https://zhuanlan.zhihu.com/c_1196384168014368768

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论