![](https://blogimg.goo.ne.jp/user_image/5c/b8/fd847b5a77d0a75c5d0faa0e96c6907f.jpg)
三度目の正直?ChatGPTへの質問。
「pythonのタートルグラフィックスでサイクロイドを描画するプログラムを書いてください」![](https://blogimg.goo.ne.jp/user_image/39/90/f630b346358e87e5cd94396b62755ddc.jpg?1678125532)
![](https://blogimg.goo.ne.jp/user_image/3b/6f/b840e2305ce4f9b6e8bd4d78d5a218c9.jpg?1678125577)
![](https://blogimg.goo.ne.jp/user_image/0b/99/c1cf4c7abf7d528aa9142b77cc4a61cc.jpg?1678125599)
ChatGPTからの回答の通りにPydroidでやってみたら、お見事!!!
以下はPythonのタートルグラフィックスを使用してサイクロイドを描画するプログラムです。
import math
import turtle
# サイクロイドのパラメータ
R = 100 # 固定円の半径
r = 50 # 周回円の半径
d = 100 # 周回円の中心と固定円の距離
# タートルの初期化
t = turtle.Turtle()
t.speed(0)
t.penup()
t.goto(-300, 0)
t.pendown()
# サイクロイドの描画
theta = 0
x = (R - r) * math.cos(theta) + d * math.cos((R - r) / r * theta)
y = (R - r) * math.sin(theta) - d * math.sin((R - r) / r * theta)
t.goto(x, y)
t.pendown()
for i in range(360):
theta = math.radians(i)
x = (R - r) * math.cos(theta) + d * math.cos((R - r) / r * theta)
y = (R - r) * math.sin(theta) - d * math.sin((R - r) / r * theta)
t.goto(x, y)
# 終了処理
turtle.done()
このプログラムでは、サイクロイドのパラメータを定義し、タートルを初期化して、サイクロイドを描画します。具体的には、固定円の半径
R
、周回円の半径 r
、周回円の中心と固定円の距離 d
を設定し、タートルを初期位置に移動させて、サイクロイドを描画します。math
モジュールを使用して、サイクロイドの座標を計算し、タートルを移動させます。サイクロイドの座標は、次の式で計算されます。x = (R - r) * cos(theta) + d * cos((R - r) / r * theta)
y = (R - r) * sin(theta) - d * sin((R - r) / r * theta)
最後に、
turtle.done()
を呼び出して、描画を終了します。次はアステロイドとかカージオイド、カテナリーでもやってみようかな?