螺旋Pi代码

gpt-4o支持图片生成后,凑热闹试了下,个人感觉效果确实很OK,之前用mj或sd生成的图片,可能是不会提示词的原因,总感觉风格怪怪的,指令跟随不太好。

前两天在 有趣的常数 里讲了 π \pi π e e e好玩儿的地方,里面用了螺旋字符串,今天贴一下参考代码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import PathPatch
from matplotlib.textpath import TextPath
from matplotlib.collections import PolyCollection
from matplotlib.font_manager import FontProperties

n = 100
A = np.linspace(np.pi, n * 2 * np.pi, 10_000)
R = 5 + np.linspace(np.pi, n * 2 * np.pi, 10_000)
T = np.stack([R * np.cos(A), R * np.sin(A)], axis=1)
dx = np.cos(A) - R * np.sin(A)
dy = np.sin(A) + R * np.cos(A)
O = np.stack([-dy, dx], axis=1)
O = O / (np.linalg.norm(O, axis=1)).reshape(len(O), 1)

L = np.zeros(len(T))
np.cumsum(np.sqrt(((T[1:] - T[:-1]) ** 2).sum(axis=1)), out=L[1:])

import mpmath

mpmath.mp.dps = 15000
text = str(mpmath.pi)

path = TextPath((0, 0), text, size=6, prop=FontProperties(family="Source Serif Pro"))
Vx, Vy = path.vertices[:, 0], path.vertices[:, 1]
X = np.interp(Vx, L, T[:, 0]) + Vy * np.interp(Vx, L, O[:, 0])
Y = np.interp(Vx, L, T[:, 1]) + Vy * np.interp(Vx, L, O[:, 1])
Vx[...], Vy[...] = X, Y

fig = plt.figure(figsize=(8, 8))
ax = fig.add_axes([0, 0, 1, 1], aspect=1)
patch = PathPatch(path, facecolor="k", linewidth=0)
ax.add_artist(patch)

plt.rcParams["text.usetex"] = True
ax.text(-3, 0, "$\pi$", ha="center", va="center", size=500, color="white", alpha=0.6)

ax.set_xlim(-200, 200), ax.set_xticks([])
ax.set_ylim(-200, 200), ax.set_yticks([])

plt.show()
# plt.savefig("/Users/rougier/Desktop/spiral-pi.png", dpi=150)

公众号 | FunIO
微信搜一搜 “funio”,发现更多精彩内容。
个人博客 | blog.boringhex.top

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值