当前位置: 面试刷题>> 移动的圆 (经典算法题500道)


题目补充

题目:移动的圆

假设在一个二维平面上,有一个圆从点 (x0, y0) 开始,以恒定速度 v 沿着直线方向 (dx, dy) 移动。同时,该圆有一个固定的半径 r。给定一个查询点 (xq, yq),请编写一个程序来判断在给定的时间点 t 时,查询点 (xq, yq) 是否在圆内(包括边界上)。

输入

  • 圆的起始位置 (x0, y0)
  • 圆的半径 r
  • 圆移动的速度向量 (dx, dy)
  • 查询点 (xq, yq)
  • 时间点 t

输出

  • 如果在圆内(包括边界),输出 "Yes";否则,输出 "No"

示例代码

PHP 示例

function isPointInCircle($x0, $y0, $r, $dx, $dy, $xq, $yq, $t) {
    // 计算圆在时间点t的位置
    $x = $x0 + $dx * $t;
    $y = $y0 + $dy * $t;
    
    // 计算查询点到圆心的距离的平方
    $distanceSquared = pow($x - $xq, 2) + pow($y - $yq, 2);
    
    // 判断是否在圆内或圆上
    if ($distanceSquared <= pow($r, 2)) {
        return "Yes";
    } else {
        return "No";
    }
}

// 示例使用
$x0 = 0; $y0 = 0; $r = 5; $dx = 1; $dy = 1; $xq = 4; $yq = 4; $t = 2;
echo isPointInCircle($x0, $y0, $r, $dx, $dy, $xq, $yq, $t);  // 输出 "Yes"

Python 示例

def is_point_in_circle(x0, y0, r, dx, dy, xq, yq, t):
    # 计算圆在时间点t的位置
    x = x0 + dx * t
    y = y0 + dy * t
    
    # 计算查询点到圆心的距离的平方
    distance_squared = (x - xq) ** 2 + (y - yq) ** 2
    
    # 判断是否在圆内或圆上
    if distance_squared <= r ** 2:
        return "Yes"
    else:
        return "No"

# 示例使用
x0, y0, r, dx, dy, xq, yq, t = 0, 0, 5, 1, 1, 4, 4, 2
print(is_point_in_circle(x0, y0, r, dx, dy, xq, yq, t))  # 输出 "Yes"

JavaScript 示例

function isPointInCircle(x0, y0, r, dx, dy, xq, yq, t) {
    // 计算圆在时间点t的位置
    let x = x0 + dx * t;
    let y = y0 + dy * t;
    
    // 计算查询点到圆心的距离的平方
    let distanceSquared = Math.pow(x - xq, 2) + Math.pow(y - yq, 2);
    
    // 判断是否在圆内或圆上
    if (distanceSquared <= Math.pow(r, 2)) {
        return "Yes";
    } else {
        return "No";
    }
}

// 示例使用
const x0 = 0, y0 = 0, r = 5, dx = 1, dy = 1, xq = 4, yq = 4, t = 2;
console.log(isPointInCircle(x0, y0, r, dx, dy, xq, yq, t));  // 输出 "Yes"

码小课网站中有更多相关内容分享给大家学习,这些内容包括但不限于算法基础、数据结构、编程语言进阶等,欢迎访问学习。

推荐面试题