半圆/矩形碰撞检测
创始人
2024-11-21 12:30:07
0

以下是一个简单的示例代码,用于检测半圆和矩形之间的碰撞:

import math

def is_collision(circle_x, circle_y, circle_radius, rect_x, rect_y, rect_width, rect_height):
    # 将矩形的中心点转换为相对于半圆的坐标系
    rect_center_x = rect_x + rect_width/2 - circle_x
    rect_center_y = rect_y + rect_height/2 - circle_y

    # 将矩形的中心点坐标旋转回原始坐标系
    angle = math.atan2(rect_center_y, rect_center_x)
    rect_center_x = math.cos(angle) * rect_center_x + math.sin(angle) * rect_center_y
    rect_center_y = -math.sin(angle) * rect_center_x + math.cos(angle) * rect_center_y

    # 检查矩形的中心点是否在半圆的范围内
    if rect_center_x < 0:
        closest_x = 0
    elif rect_center_x > circle_radius:
        closest_x = circle_radius
    else:
        closest_x = rect_center_x

    if rect_center_y < -rect_height/2:
        closest_y = -rect_height/2
    elif rect_center_y > rect_height/2:
        closest_y = rect_height/2
    else:
        closest_y = rect_center_y

    # 计算半圆中心点和矩形中心点之间的距离
    distance_x = rect_center_x - closest_x
    distance_y = rect_center_y - closest_y
    distance = math.sqrt(distance_x**2 + distance_y**2)

    # 如果距离小于等于半圆的半径,则发生碰撞
    if distance <= circle_radius:
        return True
    else:
        return False

# 示例用法
circle_x = 0
circle_y = 0
circle_radius = 5

rect_x = -3
rect_y = -3
rect_width = 6
rect_height = 6

collision = is_collision(circle_x, circle_y, circle_radius, rect_x, rect_y, rect_width, rect_height)
print(collision)  # 输出 True 或 False,表示是否发生碰撞

以上代码通过将矩形的中心点转换为相对于半圆的坐标系,然后将坐标系旋转回原始坐标系,最后检查矩形的中心点是否在半圆的范围内,来判断是否发生碰撞。

相关内容

热门资讯

wepoke ai辅助!wep... wepoke ai辅助!wepoke可以使用模拟器,wepok软件透明挂,攻略教程(有挂技巧)1、点...
wepoke辅助挂!wepok... wepoke辅助挂!wepoke有插件,wepOkE总是真的有挂,科技教程(有挂细节);玩家必备必赢...
玩家攻略推荐!天天斗牌大联盟麻... 玩家攻略推荐!天天斗牌大联盟麻将(透明挂)好像真的有挂(2021已更新)(哔哩哔哩)1、构建自己的天...
微扑克有辅助挂!微扑克大厅都是... 微扑克有辅助挂!微扑克大厅都是机器人,德州扑克微扑克俱乐部,系统教程(有挂机密)是一款可以让一直输的...
wepokeai机器人!wep... 这是一款非常优秀的WepOke ia辅助检测软件,能够让你了解到WepOke中牌率当中全部隐藏参数,...
揭秘一下!科乐麻将系统规律(透... 揭秘一下!科乐麻将系统规律(透视)原来是有挂(2026已更新)(哔哩哔哩)1、科乐麻将系统规律系统规...
微扑克有辅助挂!微扑克有后台控... 微扑克有辅助挂!微扑克有后台控制(透明挂)原来真的是有挂1、超多福利:超高返利,海量正版游戏,微扑克...
WePoKe外 挂!wopok... 1、WePoKe外 挂!wopoker有外 挂(透明挂)wEpOke(就是真的有挂);该软件可以轻松...
程序员教你!欢乐划水麻将是不是... 程序员教你!欢乐划水麻将是不是有猫腻(透视辅助)都是有挂(2024已更新)(哔哩哔哩)1、点击下载安...
微扑克系统发牌规律!微扑克有计... 1、微扑克系统发牌规律!微扑克有计算器,微扑克ai软件(确实真的有挂);代表性(透视辅助软件透明挂)...