# 点与其他几何体的距离
3D 点是有 x,y,z 三个坐标组成,类名 Point,
# 三维向量点
import * as cga from "@xtor/cga";
function randomV3() {
return cga.Vec3(
Math.random() * 100 - 50,
Math.random() * 100,
Math.random() * 100 - 50
);
}
# 点与点的距离
计算点到点的距离
import * as cga from "@xtor/cga";
var point0 = new cga.Vec3().copy(randomV3());
var point1 = new cga.Vec3().copy(randomV3());
var result = point0.distancePoint(point1);
# 点到直线的距离
计算点到直线的距离
import * as cga from "@xtor/cga";
var point = new cga.Vec3().copy(randomV3());
var line = new cga.Line(randomV3(), randomV3());
var result = point.distanceTo(line);
# 点到射线的距离
import * as cga from "@xtor/cga";
var point = new cga.Vec3().copy(randomV3());
var ray = new cga.Ray(randomV3(), randomV3().normalize());
var result = point.distanceRay(ray);
# 点到线段的距离
import * as cga from "@xtor/cga";
var point = new cga.Vec3().copy(randomV3());
var seg = new cga.Segment(randomV3(), randomV3());
var result = point.distanceSegment(seg);
# 点到折线的距离
import * as cga from "@xtor/cga";
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("线性检索");
//测试法大规模数据要比线性检索快两倍以上
# 点到圆圈的距离
var point = new cga.Vec3().copy(randomV3());
var circle = new cga.Circle(randomV3(), 5);
var result = point.distanceCircle(circle);
infoPanel.innerText = JSON.stringify(result);
# 点与三角形的距离测试
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);
# 点到圆盘的距离
← 介绍 线与其他几何体的距离 →