UNPKG

@xtor/cga.js

Version:

Xtor Compute Geometry Algorithm Libary 计算几何算法库

131 lines (102 loc) 2.97 kB
# 点与其他几何体的距离 3D 点是有 x,y,z 三个坐标组成,类名 Point, ## 三维向量点 ```js import * as cga from "@xtor/cga.js"; function randomV3() { return cga.Vec3( Math.random() * 100 - 50, Math.random() * 100, Math.random() * 100 - 50 ); } ``` ## 点与点的距离 计算点到点的距离 <div></div> <ClientOnly> <distance geo0 = "Vec3" geo1 = "Vec3"></distance> </ClientOnly> ```javascript import * as cga from "@xtor/cga.js"; var point0 = new cga.Vec3().copy(randomV3()); var point1 = new cga.Vec3().copy(randomV3()); var result = point0.distancePoint(point1); ``` ## 点到直线的距离 计算点到直线的距离 <div></div> <ClientOnly> <distance geo0 = "Vec3" geo1 = "Line"></distance> </ClientOnly> ```javascript import * as cga from "@xtor/cga.js"; var point = new cga.Vec3().copy(randomV3()); var line = new cga.Line(randomV3(), randomV3()); var result = point.distanceTo(line); ``` ## 点到射线的距离 <div></div> <ClientOnly> <distance geo0 = "Vec3" geo1 = "Ray"></distance> </ClientOnly> ```javascript import * as cga from "@xtor/cga.js"; var point = new cga.Vec3().copy(randomV3()); var ray = new cga.Ray(randomV3(), randomV3().normalize()); var result = point.distanceRay(ray); ``` ## 点到线段的距离 <div></div> <ClientOnly> <distance geo0 = "Vec3" geo1 = "Segment"></distance> </ClientOnly> ```javascript import * as cga from "@xtor/cga.js"; var point = new cga.Vec3().copy(randomV3()); var seg = new cga.Segment(randomV3(), randomV3()); var result = point.distanceSegment(seg); ``` ## 点到折线的距离 <div></div> <ClientOnly> <distance geo0 = "Vec3" geo1 = "Polyline"></distance> </ClientOnly> ```javascript import * as cga from "@xtor/cga.js"; var vs = []; for (let i = 0; i < 100000; i++) { vs.push(randomV3()); } var point = new cga.Vec3().copy(randomV3()); var polyline = new cga.Polyline(vs); console.time("测试法"); var result = point.distancePolyline(polyline); console.timeEnd("测试法"); // console.time("线性检索"); // var result1 = point.distancePolyLine1(polyline); // console.timeEnd("线性检索"); //测试法大规模数据要比线性检索快两倍以上 ``` ## 点到圆圈的距离 <div></div> <ClientOnly> <distance geo0 = "Vec3" geo1 = "Circle"></distance> </ClientOnly> ## 点与三角形的距离测试 <div></div> <ClientOnly> <distance geo0 = "Vec3" geo1 = "Triangle"></distance> </ClientOnly> ```javascript var point = new cga.Vec3().copy(randomV3()); var triangle = new cga.Triangle(randomV3(), randomV3(), randomV3()); var result = point.distanceTriangle(triangle); infoPanel.innerText = JSON.stringify(result); ``` ## 点到圆盘的距离 <div></div> <ClientOnly> <distance geo0 = "Vec3" geo1 = "Disk"></distance> </ClientOnly> <!-- <click-to-copy :info="loadingTag" /> -->