inspire by Wild Magic
Computional Geometry Algorithm implement JavaScript,javascript 实现计算机几何算法库,实现比如像距离,相交,包含,偏移,平行垂直判断,正负位置等算法
如果你需要计算几何类的算法还没实现,可以 issue 提出,获取 Q 群联系我,优先实现
案例:
-
点与其他元素的距离 http://dcgraph.gitee.io/xtorcga/guide/distPointAll.html
-
线与其他元素的距离 http://dcgraph.gitee.io/xtorcga/guide/distLineAll.html
-
射线与其他元素的距离 http://dcgraph.gitee.io/xtorcga/guide/distRayAll.html
-
线段与其他元素的距离 http://dcgraph.gitee.io/xtorcga/guide/distSegmentAll.html
npm install xtorcga -D
- 全部引用;:
import * as cga from "xtorcga";
function randomV3() {
return cga.v3(
Math.random() * 100 - 50,
Math.random() * 100,
Math.random() * 100 - 50
);
}
var point = new cga.Point().copy(randomV3());
var seg = new cga.Segment(randomV3(), randomV3());
var result = point.distanceSegment(seg);
- 按需求引用:
import { v3, Point, Segment } from "xtorcga";
function randomV3() {
return v3(
Math.random() * 100 - 50,
Math.random() * 100,
Math.random() * 100 - 50
);
}
var point = new Point().copy(randomV3());
var seg = new Segment(randomV3(), randomV3());
var result = point.distanceSegment(seg);
- 网页嵌入:直接下载使用 build 目录下面的 cga.js,包含到项目中
<script src="cga.js" />
或者
<script src="https://raw.githack.com/yszhao91/xtorcga/master/build/cga.js" />
<script>
var point = new CGA.Point(1, 2, 3);
var line = new CGA.Line(
new CGA.Vector3(10, 10, 20),
new CGA.Vector3(20, 15, 10)
);
var result = point.distanceLine(line);
</script>
npm install
国内
cnpm install
npm run build //编译到build目录下
npm run dev //运行项目,自己更改源码测试
- 点:Point
- 直线:Line
- 射线:Ray
- 线段:Segment
- 圆圈:Circle
- 平面:Plane
- 三角形:Triangle
- 矩形:Rectangle
- 圆盘:Disk
- 球体:Sphere
- 胶囊体: Capsule
- 包围盒:Box
点集合中最近找出距离最近的一对点 算法时间 O(nlogn)
进行中
折线或者路径中过密或者过直的点去除;
(2020 年 1 月 17 增加)
/**
* 简化点集数组,折线,路径
* @param {*} points 点集数组,折线,路径 ,继承Array
* @param {*} maxDistance 简化最大距离 默认值0.1
* @param {*} maxAngle 简化最大角度 弧度 默认值 Math.PI / 180 * 5
*/
simplifyPointList(points, maxDistance, maxAngle);
一级目录与二级目录存在相应算法关系
- Point
- Point
- Line
- Ray
- Segment
- Circle
- Plane
- Triangle
- Rectangle
- Disk
- Sphere
- Capsule
- Line
- Line
- Ray
- Segment
- Triangle (2020 年 1 月 17 增加)
- Ray
- Ray
- Segment
- Triangle (2020 年 1 月 17 增加)
- Segment
- Segment
相交可以使用距离算法来实现,准确的说距离中的 closets 最近点在 distance 为 0(小于 1e-4,精度可以自定义)的时候也就是交点,parameters 表为 0 或 1 可以判断为端点相交
- Segment
- Segment
- Segment
- Plane
- Segment
- Triangle
计算机几何算法(CGA)专栏 https://zhuanlan.zhihu.com/c_1196384168014368768
项目将会不断完善,如果你有好的想好可以提交你的想法。欢迎 star,让项目更进一步
QQ 群:469014839