如何判断点pt是否位于指定参数的椭圆内
判断点是否在椭圆内的方法
圆是椭圆的特殊情况(长半轴=短半轴),但椭圆不能直接用「点到中心的距离≤半径」来判断,得用椭圆的标准不等式:
对于中心在(cx, cy),水平半轴为a、垂直半轴为b的椭圆,点(px, py)满足以下条件时,就在椭圆内部(包括边界):
[(px - cx)/a]² + [(py - cy)/b]² ≤ 1
结合你给出的参数:
- 中心
center = [10,10]→cx=10,cy=10 radius = [3,4](垂直半径、水平半径)→ 垂直半轴b=3,水平半轴a=4
直接用这个不等式判断即可,无需计算点到中心的距离(开平方会增加不必要的计算开销)。
示例代码(JavaScript)
const center = [10, 10]; const radius = [3, 4]; // 垂直半径、水平半径 const pt = [12, 11]; // 替换为你要判断的点坐标 const cx = center[0]; const cy = center[1]; const horizontalRadius = radius[1]; const verticalRadius = radius[0]; const dx = pt[0] - cx; const dy = pt[1] - cy; // 判断点是否在椭圆内(包括边界) const isPointInEllipse = (dx / horizontalRadius) ** 2 + (dy / verticalRadius) ** 2 <= 1; console.log(isPointInEllipse); // 输出 true 或 false
补充说明
- 如果要判断点严格在椭圆内部(不包括边界),把
<= 1改成< 1即可 - 避免使用
Math.sqrt是因为平方运算的结果和开平方后的大小关系一致,直接用平方比较更高效
内容的提问来源于stack exchange,提问作者whitebear
相关产品推荐
相关产品推荐

