Как построить гофрированный круг в декартовой системе координат? - PullRequest
1 голос
/ 13 июля 2020

Ищу способ построить гофрированный круг в Python. Corrugated circle My attempt doesn't produce the correct output:

from matplotlib import pyplot as plt
import numpy as np
from math import pi

x=np.linspace(-10,10,100)
y=x

X, Y = np.meshgrid(x,y)

circle = (X-np.cos(2*pi*0.2*Y))**2 + (Y-np.sin(2*pi*0.2*X))**2 - 5.

plt.contour(X,Y,circle,[0])
plt.show()

theta = np.linspace(-pi,pi,100)
courbure = np.sin(theta*10)

plt.plot(theta,courbure)
plt.show()
    
circle2 = (X-(courbure*np.cos(theta)))**2 + (Y-np.sin(theta)*courbure)**2 - courbure**2
plt.contour(X,Y,circle2)
plt.show()

Попытка нарисовать гофрированный круг

Спасибо.

1 Ответ

1 голос
/ 15 июля 2020

Я построил гофрированный круг, используя синусоидальную волну с частотой, равной 10. Радиус колеблется между 0,9 и 1, потому что я беру отрицательную абсолютную часть синуса. Амплитуда делится на 10.

Для увеличения гофры нужно увеличить частоту. Здесь f = 10.

from matplotlib import pyplot as plt
import numpy as np
from math import pi

x=np.linspace(-10,10,1000)
y=x

X, Y = np.meshgrid(x,y)

circle = (X)**2 + (Y)**2 - (1+ -np.abs(np.sin(np.arctan(Y/X)*10))/10)

plt.contour(X,Y,circle)
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...