题目补充
题目:移动的圆
假设在一个二维平面上,有一个圆从点 (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"
码小课网站中有更多相关内容分享给大家学习,这些内容包括但不限于算法基础、数据结构、编程语言进阶等,欢迎访问学习。