如何用Python把篮球和鸡联系起来

这篇具有很好参考价值的文章主要介绍了如何用Python把篮球和鸡联系起来。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

画个球

不管篮球和不和鸡联系起来,都首先得有个球,或者说要有一个球面,用参数方程可以表示为

x = r cos ⁡ ϕ cos ⁡ θ y = r cos ⁡ ϕ sin ⁡ θ z = r sin ⁡ ϕ \begin{aligned} x &= r\cos\phi\cos\theta\\ y &= r\cos\phi\sin\theta\\ z &= r\sin\phi \end{aligned} xyz=rcosϕcosθ=rcosϕsinθ=rsinϕ

当然,有球还不行,还得有篮球。篮球其实很好画,只要在球上加两个背带就可以了,这一点可以用Python来实现,但考虑到方便,还是用PS直接P了一下,希望最后画出来不是太离谱。

那么现在球有了,还必须得有鸡,所以在百度上找一只。然后把这只鸡映射到球面上。

如何用Python把篮球和鸡联系起来

接下来就是关键步骤,如何将这个平面卷成一个球?方法也很简单,只需进行颜色映射就行了。

import numpy as np
import matplotlib.pyplot as plt
path = "bracken1.jpg"
img = plt.imread(path)
#img = img[::5, ::5, :]
h, w, c = img.shape
ys, xs = np.indices([h, w])
th = xs/w*np.pi*2
phi = np.pi/2 - ys/h*np.pi

x = np.cos(phi)*np.cos(th)
y = np.cos(phi)*np.sin(th)
z = np.sin(phi)

cs = [tuple(c/255) for c in img.reshape(-1,3)]
ax = plt.subplot(projection='3d')
ax.scatter(x, y, z, marker='.', c=cs)
plt.axis('off')
plt.show()

效果为

如何用Python把篮球和鸡联系起来

让球转起来

当然需要注意的一个是,这是个球,而不是一个圆,所以下面让这个球转一下。想要让球转动,那就得有一个旋转矩阵,三个方向的旋转矩阵如下表

R x ( θ ) R_x(\theta) Rx(θ) R x ( θ ) R_x(\theta) Rx(θ) R x ( θ ) R_x(\theta) Rx(θ)
[ 1 0 0 0 C θ − S θ 0 S θ C θ ] \begin{bmatrix}1&0&0\\0&C_\theta&-S_\theta\\0&S_\theta&C_\theta\\\end{bmatrix} 1000CθSθ0SθCθ [ C θ 0 S θ 0 1 0 − S θ 0 C θ ] \begin{bmatrix}C_\theta&0 &S_\theta\\0&1&0\\-S_\theta&0&C_\theta\\\end{bmatrix} Cθ0Sθ010Sθ0Cθ [ C θ S θ 0 − S θ C θ 0 0 0 1 ] \begin{bmatrix}C_\theta &S_\theta&0\\-S_\theta&C_\theta&0\\0&0&1\end{bmatrix} CθSθ0SθCθ0001

由于只需绕Z轴转动,所以代码如下

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import animation

cos = lambda th : np.cos(np.deg2rad(th))
sin = lambda th : np.sin(np.deg2rad(th))

Rz = lambda th : np.array([
    [cos(th) , -sin(th), 0],
    [sin(th), cos(th), 0],
    [0       , 0,       1]])

xyz = np.array([x,y,z]).reshape(3,-1)

fig = plt.figure(figsize=(5,5))
ax = fig.add_subplot(projection='3d')
ax.grid()

lines = ax.scatter(x, y, z, marker='.', c=cs)

def animate(n):
    # 按照xyz顺序旋转
    axis = [2,1,0]
    shape = xyz.shape
    lines._offsets3d = Rz(n)@xyz
    return lines,

ani = animation.FuncAnimation(fig, animate, 
    range(0, 360, 2), interval=25, blit=True)

#plt.show()
ani.save("zyx.gif")

效果如下,还挺有喜感的。

如何用Python把篮球和鸡联系起来文章来源地址https://www.toymoban.com/news/detail-478578.html

到了这里,关于如何用Python把篮球和鸡联系起来的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 华为OD机试 - 篮球比赛(Java & JS & Python)

    题目描述 篮球(5V5)比赛中,每个球员拥有一个战斗力,每个队伍的所有球员战斗力之和为该队伍的总体战斗力。 现有10个球员准备分为两队进行训练赛,教练希望2个队伍的战斗力差值能够尽可能的小,以达到最佳训练效果。 给出10个球员的战斗力,如果你是教练,你该如何分

    2024年02月12日
    浏览(44)
  • 用Python实现一个蔡徐坤打篮球的小游戏,【附源码】

    准备工作开发环境 Python版本:3.7.8 相关模块: requests模块; tqdm模块; pyfreeproxy模块; pyechats模块; 以及一些python自带的模块。 效果预览 开始界面 游戏规则 wasd 控制人物的移动,空格启动律师函炸毁全部篮球。 代码实现 导入模块 游戏主界面

    2024年02月06日
    浏览(37)
  • 华为OD机试 - 篮球游戏(Java & JS & Python & C & C++)

    题目描述 幼儿园里有一个放倒的圆桶,它是一个线性结构,允许在桶的右边将篮球放入,可以在桶的左边和右边将篮球取出。 每个篮球有单独的编号,老师可以连续放入一个或多个篮球,小朋友可以在桶左边或右边将篮球取出,当桶只有一个篮球的情况下,必须从左边取出

    2024年02月21日
    浏览(48)
  • 不管是前端还是后端,都要看的Elasticsearch快速入门

    Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎,Elasticsearch和Mysql,Redis,MongoDb,Clickhouse等一样,都可以认为它 是一种数据库 设想一个场景: user表有6千多万条数据,我想查询nick中包含”大帅哥“的数据: Select nick from user where nick like \\\'%大帅哥%\\\' 比如,我

    2024年02月08日
    浏览(49)
  • 【新】华为OD机试 - 星际篮球争霸赛(Python)| 刷完获取OD招聘渠道

    在星球争霸篮球赛对抗赛中 ,最大的宇宙战队希望每个人 都能拿到 MVP,MVP 的条件是单场最高分得分获得者。 可以并列所以宇宙战队 决定在比赛中 尽可能让更多队员上场, 并且让所有得分的选手得分都相同, 然而比赛过程中的每 1 分钟的得分都只能由某一个人包揽。 输入

    2024年02月09日
    浏览(38)
  • video-从入门到精通-不管任何项目奇葩需求,这一专栏就够了

    在日常我们的开发中,我们会遇到类似这样的功能,视频播放了这种情况,但是如果只是简单的实现的话, ui不满意,因为,别人有的,就是代表这是能实现的,你必须完成(苦der程序员) 为了解决这种苦恼,这篇专栏就够用了, 博主加急更新中!!!!!!! 大佬如有见解

    2024年02月11日
    浏览(49)
  • 257.【华为OD机试真题】幼儿园篮球游戏(贪心算法-Java&Python&C++&JS实现)

    🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(JavaPythonC++JS分别实现),详细代码讲解,助你深入学习,深度掌握!

    2024年02月19日
    浏览(52)
  • springboot/java/php/node/python篮球商品销售微信小程序设计与实现【计算机毕设】

    本系统 (程序+源码) 带文档lw万字以上    文末可领取本课题的JAVA源码参考 选题背景: 在当今数字化时代,微信小程序凭借其无需下载安装、即用即走的便捷性,已成为连接用户与服务的重要桥梁。篮球作为一项广受欢迎的体育运动,在全球范围内拥有庞大的爱好者群体

    2024年03月08日
    浏览(63)
  • 【CSS 画个梯形】

    是CSS的属性之一,用于裁剪元素的形状。它可以通过定义一个具有多边形顶点坐标的值来创建一个多边形的裁剪区域,从而实现元素的非矩形裁剪效果。 使用方式如下: 其中多边形顶点坐标可以按照顺时针或逆时针顺序设置,坐标以百分比或像素为单位。 此外, clip-path 还

    2024年02月11日
    浏览(36)
  • Python,让地球转起来

    想画一个转动的地球,那么首先要有一个球,或者说要有一个球面,用参数方程可以表示为 x = r cos ⁡ ϕ cos ⁡ θ y = r cos ⁡ ϕ sin ⁡ θ z = r sin ⁡ ϕ begin{aligned} x = rcosphicostheta\\\\ y = rcosphisintheta\\\\ z = rsinphi end{aligned} x y z ​ = r cos ϕ cos θ = r cos ϕ sin θ = r sin ϕ ​ 然后要有

    2024年02月08日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包