Commit 85c2c8ae authored by François Lavallée's avatar François Lavallée

nouveau modèle

parent 2ad1fefa
......@@ -33,6 +33,86 @@ source("utils_model_electra.R")
# savePlot_index_and_paramsInFile_TRANSITOIRE
######################### Nouveau Stationnaire v2
## Paramètres
# vitesse moteur (tour/ seconde)
v1 = 0.5
v2 = -0.25
v3 = 3
# longueur tiges (rayon)
rB = 4; rC = 4
rH = 2; rI = 2
rD = 1; rE = 1
rF = 1; rG = 1
# position initiale (from angle)
# A,B,C
Ax = 0
Ay = 0
angleIni_B = 0
# H,I
angleH = 0.25
angleI = 0.25
# D,E
angleIni_D = 0
# F,G
angleIni_F = 0
# time
timeStep = 0.005 # sec
timeStep = 0.02 # sec
Tfinal = 5
times = seq(0,Tfinal, by = timeStep)
t=0.1
t=0
positions_t_Stationnaire_v2(t, v1,v2,v3, rB,rC,rD,rE,rF,rG,rH,rI, angleH,angleI, angleIni_B,angleIni_D,angleIni_F)
plot_oneTime_v2(t, v1,v2,v3, rB,rC,rD,rE,rF,rG,rH,rI, angleH,angleI, angleIni_B,angleIni_D,angleIni_F)
##########################################
### Dépendance condition initiales ? ###
##########################################
# angles par défaut nuls
angleIni_F= 0
#plot_oneTime_v2(t, v1,v2,v3, rB,rC,rD,rE,rF,rG,rH,rI, angleH,angleI, angleIni_B,angleIni_D,angleIni_F)
plotTrajectory_v2(times, v1,v2,v3, rB,rC,rD,rE,rF,rG,rH,rI, angleH,angleI, angleIni_B,angleIni_D,angleIni_F)
# angles par défaut nuls
angleIni_F= 1
plotTrajectory_v2(times, v1,v2,v3, rB,rC,rD,rE,rF,rG,rH,rI, angleH,angleI, angleIni_B,angleIni_D,angleIni_F)
# remplir l'espace (densité) ?
timeStep = 0.005 # sec
Tfinal = 25
times = seq(0,Tfinal, by = timeStep)
plotTrajectory_v2(times, v1,v2,v3=pi, rB,rC,rD,rE,rF,rG,rH,rI, angleH,angleI, angleIni_B,angleIni_D,angleIni_F)
# old modèle
## Paramètres
# vitesse moteur (tour/ seconde)
v1 = 0.5
......
......@@ -14,7 +14,172 @@ theme_set(theme_bw())
# Positions des loupiottes en fonction du temps
# Positions des points de lumiere en fonction du temps
positions_t_Stationnaire_v2 = function(t, v1,v2,v3, rB,rC,rD,rE,rF,rG,rH,rI, angleH,angleI, angleIni_B,angleIni_D,angleIni_F){
# le point H n'est plus sur le segment AC
# B,C
Bx = rB * cos(2*pi*v1*t + angleIni_B)
By = rB * sin(2*pi*v1*t + angleIni_B)
Cx = rC * cos(2*pi*v1*t + angleIni_B +pi)
Cy = rC * sin(2*pi*v1*t + angleIni_B +pi)
# H,I
Hx = rH * cos(2*pi*v1*t + angleIni_B - angleH)
Hy = rH * sin(2*pi*v1*t + angleIni_B - angleH)
Ix = rI * cos(2*pi*v1*t + angleIni_B + angleI +pi)
Iy = rI * sin(2*pi*v1*t + angleIni_B + angleI +pi)
# D,E
# on ne calcule pas HD en fait, le nom est mal choisit
HDx = rD * cos(2*pi*(v2+v1)*t + (angleIni_D + angleIni_B - angleH))
HDy = rD * sin(2*pi*(v2+v1)*t + (angleIni_D + angleIni_B - angleH))
HEx = rE * cos(2*pi*(v2+v1)*t + (angleIni_D + angleIni_B - angleH) +pi)
HEy = rE * sin(2*pi*(v2+v1)*t + (angleIni_D + angleIni_B - angleH) +pi)
Dx = Hx + HDx
Dy = Hy + HDy
Ex = Hx + HEx
Ey = Hy + HEy
# F,G
IFx = rF * cos(2*pi*(v3+v1)*t + (angleIni_F+ (angleIni_B+pi) + angleI))
IFy = rF * sin(2*pi*(v3+v1)*t + (angleIni_F+ (angleIni_B+pi) + angleI))
IGx = rG * cos(2*pi*(v3+v1)*t + (angleIni_F+ (angleIni_B+pi) + angleI) +pi)
IGy = rG * sin(2*pi*(v3+v1)*t + (angleIni_F+ (angleIni_B+pi) + angleI) +pi)
Fx = Ix + IFx
Fy = Iy + IFy
Gx = Ix + IGx
Gy = Iy + IGy
#return(c(Bx,By,Cx,Cy,Hx,Hy,Dx,Dy,Ex,Ey,Ix,Iy,Fx,Fy,Gx,Gy,time))
return(data.frame(Bx = Bx, By = By, Cx = Cx, Cy = Cy,
Hx = Hx, Hy = Hy,
Dx = Dx, Dy = Dy, Ex = Ex, Ey = Ey,
Ix = Ix, Iy = Iy,
Fx = Fx, Fy = Fy, Gx = Gx, Gy = Gy,
time = t) )
}
# plot res at time t
plot_oneTime_v2 = function(t, v1,v2,v3, rB,rC,rD,rE,rF,rG,rH,rI, angleH,angleI, angleIni_B,angleIni_D,angleIni_F){
res = positions_t_Stationnaire_v2(t, v1,v2,v3, rB,rC,rD,rE,rF,rG,rH,rI, angleH,angleI, angleIni_B,angleIni_D,angleIni_F)
rayonMax = max(rB,rC, rH + max(rD,rE), rI + max(rF,rG) )
p <- ggplot(res) + labs(title= paste0("t = ",t)) +
geom_point(aes(x=Bx, y=By), col="yellow", size = 3) +
geom_point(aes(x=Cx, y=Cy), col="yellow", size = 3) +
geom_point(aes(x=Dx, y=Dy), col="yellow", size = 3) +
geom_point(aes(x=Ex, y=Ey), col="yellow", size = 3) +
geom_point(aes(x=Fx, y=Fy), col="yellow", size = 3) +
geom_point(aes(x=Gx, y=Gy), col="yellow", size = 3) +
geom_point(aes(x=Hx, y=Hy), col="black") +
geom_point(aes(x=Ix, y=Iy), col="black") +
geom_point(aes(x=0, y=0), col="black")
p + expand_limits(x=c(-rayonMax,rayonMax), y=c(-rayonMax, rayonMax)) +
coord_fixed(ratio=1) +
theme(axis.text.y=element_blank(), axis.text.x=element_blank(),
axis.ticks=element_blank(),
axis.title.x=element_blank(), axis.title.y=element_blank(),legend.position="none",
panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),
plot.background=element_blank())
}
create_df_v2 = function(times, v1,v2,v3, rB,rC,rD,rE,rF,rG,rH,rI, angleH,angleI, angleIni_B,angleIni_D,angleIni_F){
df = data.frame(Bx = double(), By = double(), Cx = double(), Cy = double(),
Hx = double(), Hy = double(),
Dx = double(), Dy = double(), Ex = double(), Ey = double(),
Ix = double(),
Iy = double(),
Fx = double(), Fy = double(), Gx = double(), Gy = double(),
time = double(),
speedBx = double(), speedBy = double(),
speedCx = double(), speedCy = double(),
speedDx = double(), speedDy = double(),
speedEx = double(), speedEy = double(),
speedFx = double(), speedFy = double(),
speedGx = double(), speedGy = double(),
accBx = double(), accBy = double(),
accCx = double(), accCy = double(),
accDx = double(), accDy = double(),
accEx = double(), accEy = double(),
accFx = double(), accFy = double(),
accGx = double(), accGy = double())
for (i in 1:length(times)){
t = times[i]
res = positions_t_Stationnaire_v2(t, v1,v2,v3, rB,rC,rD,rE,rF,rG,rH,rI, angleH,angleI, angleIni_B,angleIni_D,angleIni_F)
df = rbind.fill(df,res)
}
return(df)
}
plotTrajectory_v2 <- function(times, v1,v2,v3, rB,rC,rD,rE,rF,rG,rH,rI, angleH,angleI, angleIni_B,angleIni_D,angleIni_F) {
theme_set(theme_bw())
df = create_df_v2(times, v1,v2,v3, rB,rC,rD,rE,rF,rG,rH,rI, angleH,angleI, angleIni_B,angleIni_D,angleIni_F)
rayonMax = sqrt(df$Bx^2+df$By^2)[1]
p <- ggplot(df) +
expand_limits(x=c(-rayonMax,rayonMax), y=c(-rayonMax, rayonMax)) +
coord_fixed(ratio=1) +
theme(axis.title.x=element_blank(), axis.title.y=element_blank() ) +
geom_point(aes(x=Bx, y=By), size=1) +
geom_point(aes(x=Cx, y=Cy), size=1) +
geom_point(aes(x=Dx, y=Dy), size=1, col= "red", shape = 3) +
geom_point(aes(x=Ex, y=Ey), size=0.1, col= "yellow") +
geom_point(aes(x=Fx, y=Fy), size=1, col= "blue") +
geom_point(aes(x=Gx, y=Gy), size=0.1, col= "green", shape = 3)+
labs(title = "Trajectoire Stationnaire",
subtitle = paste0("v1=",v1,", v2=",v2,", v3=",v3,", \n",
"angleIni_B=",angleIni_B,", angleIni_D=",angleIni_D,", angleIni_F=",angleIni_F))
p
}
# Positions des points de lumiere en fonction du temps
positions_t_NONsymetrique = function(t,v1, v2, v3, r1B, r1C, r2D, r2E, r3F, r3G, alphaH, alphaI, angleIni_B, angleIni_D, angleIni_F){
# B,C
Bx = r1B * cos(2*pi*v1*t + angleIni_B)
......
\relax
\providecommand\hyper@newdestlabel[2]{}
\catcode `:\active
\catcode `;\active
\catcode `!\active
\catcode `?\active
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
\global\let\oldcontentsline\contentsline
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global\let\oldnewlabel\newlabel
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\ifx\hyper@anchor\@undefined
\let\contentsline\oldcontentsline
\let\newlabel\oldnewlabel
\fi}
\fi}
\global\let\hyper@last\relax
\gdef\HyperFirstAtBeginDocument#1{#1}
\providecommand\HyField@AuxAddToFields[1]{}
\providecommand\HyField@AuxAddToCoFields[2]{}
\babel@aux{french}{}
\@writefile{toc}{\contentsline {section}{\numberline {1}Description de l'instrument}{1}{section.1}}
\@writefile{toc}{\contentsline {section}{\numberline {2}Objectifs}{1}{section.2}}
\@writefile{toc}{\contentsline {section}{\numberline {3}M\IeC {\'e}thode}{1}{section.3}}
\@writefile{toc}{\contentsline {section}{\numberline {4}Mod\IeC {\`e}le}{2}{section.4}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Stationnaire (v1)}{2}{subsection.4.1}}
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Sch\IeC {\'e}ma du mod\IeC {\`e}le, r\IeC {\'e}alis\IeC {\'e} avec le logiciel GeoGebra\relax }}{2}{figure.caption.1}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Stationnaire (v2)}{2}{subsection.4.2}}
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Sch\IeC {\'e}ma du mod\IeC {\`e}le v2, r\IeC {\'e}alis\IeC {\'e} avec le logiciel GeoGebra\relax }}{3}{figure.caption.2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Persistance r\IeC {\'e}tinienne}{4}{subsection.4.3}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Transitoire}{4}{subsection.4.4}}
\@writefile{toc}{\contentsline {section}{\numberline {5}\IeC {\'E}tude math\IeC {\'e}matique...}{5}{section.5}}
\@writefile{toc}{\contentsline {section}{\numberline {6}Mesures}{6}{section.6}}
This diff is collapsed.
\BOOKMARK [1][-]{section.1}{Description de l'instrument}{}% 1
\BOOKMARK [1][-]{section.2}{Objectifs}{}% 2
\BOOKMARK [1][-]{section.3}{M\351thode}{}% 3
\BOOKMARK [1][-]{section.4}{Mod\350le}{}% 4
\BOOKMARK [2][-]{subsection.4.1}{Stationnaire \(v1\)}{section.4}% 5
\BOOKMARK [2][-]{subsection.4.2}{Stationnaire \(v2\)}{section.4}% 6
\BOOKMARK [2][-]{subsection.4.3}{Persistance r\351tinienne}{section.4}% 7
\BOOKMARK [2][-]{subsection.4.4}{Transitoire}{section.4}% 8
\BOOKMARK [1][-]{section.5}{\311tude math\351matique...}{}% 9
\BOOKMARK [1][-]{section.6}{Mesures}{}% 10
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment