【千题案例】TypeScript获取两点之间的距离 | 中点 | 补点 | 向量 | 角度
// 定义点类
class Point {
x: number;
y: number;
constructor(x: number, y: number) {
this.x = x;
this.y = y;
}
// 计算两点间的距离
static distance(p1: Point, p2: Point): number {
const dx = p1.x - p2.x;
const dy = p1.y - p2.y;
return Math.sqrt(dx * dx + dy * dy);
}
// 计算两点间中点
static middle(p1: Point, p2: Point): Point {
return new Point((p1.x + p2.x) / 2, (p1.y + p2.y) / 2);
}
// 计算向量的补点
static neg(p: Point): Point {
return new Point(-p.x, -p.y);
}
// 计算向量的模(长度)
static norm(p: Point): number {
return Math.sqrt(p.x * p.x + p.y * p.y);
}
// 计算两点间的角度
static angle(p1: Point, p2: Point): number {
const norm1 = Point.norm(p1);
const norm2 = Point.norm(p2);
const dot = p1.x * p2.x + p1.y * p2.y;
return Math.acos(dot / (norm1 * norm2));
}
}
// 使用示例
const p1 = new Point(1, 2);
const p2 = new Point(4, 6);
console.log(Point.distance(p1, p2)); // 输出两点间的距离
console.log(Point.middle(p1, p2)); // 输出两点间的中点
console.log(Point.neg(p1)); // 输出点的补点
console.log(Point.angle(p1, p2)); // 输出两点间的角度
这段代码定义了一个Point
类,并在其内部提供了计算两点间距离、中点、向量补点、向量模(长度)以及两点间角度的静态方法。使用时,创建两个点的实例,并调用相应的静态方法来获取结果。这个例子展示了如何在TypeScript中组织代码,并使用类和静态方法来提供功能性的计算。
评论已关闭