1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| # -*- coding: cp1252 -*-
import numpy as np
import matplotlib.pyplot as plt
#paramètres du pb
a=2 #demi grand axe de la table
b=1 #demi petit axe
step=0.001 # le step
chaises=6 # le nombre de chaises
P=0 #paramètre de l'ellipse
D= 0 #distance interchaises
Places=[]
# valeurs du paramètre
t=np.arange(0,2*np.pi,0.001)
#paramétrage de l'ellipse
def cx(t):
global a
return a*np.cos(t)
def cy(t):
global b
return b*np.sin(t)
def Point (t):
return cx(t),cy(t)
def Distance (P1,P2):
return np.sqrt((P1[0]-P2[0])*(P1[0]-P2[0]) + (P1[1]-P2[1])*(P1[1]-P2[1]))
def PerimEllipse():
global step,P,D,chaises
P=0
t=0
while t<np.pi*2:
P+=Distance(Point(t),Point(t+step))
t+=step
D=P/chaises
def MarquePoints():
global step,P,D,chaises,Places
P=0
t=0
AppOK=False
while t<np.pi*2:
if P/D-int(P/D)>0.5:
AppOK=True
P+=Distance(Point(t),Point(t+step))
t+=step
if -0.01<=(P/D - int(P/D)) <=0.01 and AppOK:
Places.append(Point(t))
AppOK=False
# calcul du périmètre
PerimEllipse()
MarquePoints()
# tracé de l'ellipse
plt.plot (cx(t),cy(t))
# marquage des places
for s in Places:
plt.plot([0,s[0]],[0,s[1]])
#tracé des axes
plt.plot([-2,2],[0,0],'w')
plt.plot([0,0],[-2,2],'w')
#voir
plt.show() |
Partager