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


### 题目补充 **题目:移动的圆** 假设在一个二维平面上,有一个圆从点 `(x0, y0)` 开始,以恒定速度 `v` 沿着直线方向 `(dx, dy)` 移动。同时,该圆有一个固定的半径 `r`。给定一个查询点 `(xq, yq)`,请编写一个程序来判断在给定的时间点 `t` 时,查询点 `(xq, yq)` 是否在圆内(包括边界上)。 **输入**: - 圆的起始位置 `(x0, y0)` - 圆的半径 `r` - 圆移动的速度向量 `(dx, dy)` - 查询点 `(xq, yq)` - 时间点 `t` **输出**: - 如果在圆内(包括边界),输出 `"Yes"`;否则,输出 `"No"`。 ### 示例代码 #### PHP 示例 ```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 示例 ```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 示例 ```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" ``` **码小课网站中有更多相关内容分享给大家学习**,这些内容包括但不限于算法基础、数据结构、编程语言进阶等,欢迎访问学习。
推荐面试题