何が起こっている??
sin 関数と cos 関数をテストして、座標を SVG ファイルに出力するときに間違った場所に美しい配置が得られる理由を見つけます。そこで、このテスト コードを作成しました。これにより、答えが何であるかを予測して、その理由を見つけることができます。奇妙なことに、計算自体に影響を与えるものは何も追加されず、この動作が追加されますが、単に私が滞在しようとしている場所の位置が追加されます。位置が 0 で計算後に 0 になる場合は機能しませんが、位置が 1 で計算後に 1 になる場合は機能します。
最初のテスト:
import math
cX = 2
cY = 2
r = 2
rcX = cX + (r * math.cos(math.radians(0)))
rcY = cY + (r * math.sin(math.radians(0)))
print rcX #4
print rcY #2
r = 1
rlX = rcX + (r * math.cos(math.radians(90)))
rlY = rcY + (r * math.sin(math.radians(90)))
print rlX #4
print rlY #3
r = 4
flX = rlX + (r * math.cos(math.radians(180)))
flY = rlY + (r * math.sin(math.radians(180)))
print flX #0
print flY #3
r = 2
print r * math.cos(math.radians(270))
print flX + (r * math.cos(math.radians(270))) #-3.67394039744e-16 should be 0
print flY + (r * math.sin(math.radians(270))) #1
cX を 3 に変更すると、次の計算に影響を与えなくても機能します。
r * math.cos(math.radians(270))
その計算結果がx座標に加算されます
import math
cX = 3
cY = 2
r = 2
rcX = cX + (r * math.cos(math.radians(0)))
rcY = cY + (r * math.sin(math.radians(0)))
print rcX #5
print rcY #2
r = 1
rlX = rcX + (r * math.cos(math.radians(90)))
rlY = rcY + (r * math.sin(math.radians(90)))
print rlX #5
print rlY #3
r = 4
flX = rlX + (r * math.cos(math.radians(180)))
flY = rlY + (r * math.sin(math.radians(180)))
print flX #1
print flY #3
r = 2
print r * math.cos(math.radians(270))
print flX + (r * math.cos(math.radians(270))) #1
print flY + (r * math.sin(math.radians(270))) #1