换算角度要用math.atan2

根据x,y坐标求角度时一定要用math.atan2(y,x),不能用math.atan(y/x)。只有前者能准确还原x,y坐标,后者有时会方向错误。

    def update_normal(self):
        vel_x = self.speed * math.cos(self.speed_angle)
        vel_y = self.speed * math.sin(self.speed_angle)
        self.rect.x+=vel_x
        self.rect.y+=vel_y
        if self.rect.x<=0 or self.rect.x>=WIDTH-self.rect.width:
            self.rect.x=np.clip(self.rect.x,1,WIDTH-self.rect.width-1)
            self.speed_angle=math.atan2(vel_y,-vel_x)
        if self.rect.y<=0 or self.rect.y>=HEIGHT-self.rect.height:
            self.rect.y=np.clip(self.rect.y,1,HEIGHT-self.rect.height-1)
            self.speed_angle=math.atan2(-vel_y,vel_x)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值