forked from aitzkora/Zientziako-Jaia
-
Notifications
You must be signed in to change notification settings - Fork 0
/
tp.tex
108 lines (97 loc) · 5.37 KB
/
tp.tex
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
\documentclass[12pt]{letter}
%%%%%%%%%%%%%%%%%% PACKAGES %%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[french]{babel}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{a4wide}
\usepackage{stmaryrd}
\usepackage{amscd}
\usepackage{enumerate}
\usepackage{graphicx}
\usepackage{amsfonts}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{multirow}
\usepackage{array}
\usepackage{relsize}
\usepackage{listings}
\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\lstset{ %
language=python, % the language of the code
framerule=0pt,
basicstyle=\relsize{-2}\ttfamily, % the size of the fonts that are used for the code
%backgroundcolor=\color{black!10}, % choose the background color. You must add \usepackage{color}
showspaces=false, % show spaces adding particular underscores
showstringspaces=false, % underline spaces within strings
showtabs=false, % show tabs within strings adding particular underscores
%frame=single, % adds a frame around the code
rulecolor=\color{black}, % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. commens (green here))
breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace
keywordstyle=\color{blue}, % keyword style
commentstyle=\color{dkgreen}, % comment style
stringstyle=\color{mauve}
}
\begin{document}
%%%%%%%%%%%%%%%%% TITRE %%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{center}
{\Large Exercices }
\end{center}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\textbf{Codes César}
\begin{enumerate}
\item écrire une fonction \texttt{cesar} qui prend une clef (un nombre entre 0 et 26) et un mot (une chaîne de caractères, par exemple mot='ici')
et qui renvoie la chaîne codée.
\begin{lstlisting}
def cesar(clef, mot):
.....
return code
\end{lstlisting}
Pour cela, on pourra suivre les étapes suivantes
\begin{itemize}
\item créer une liste (\texttt{alpha}) qui contient l'alphabet. Pour cela, regarder ce que renvoie la commande \\
\texttt{string.ascii\_lowercase}
Attention à ne pas oublier d'importer le module string (\texttt{import string})
\item créer la liste décalée (\texttt{decale}) de la clef (utiliser une boucle, ou l'indiçage des listes plus la contatenation
\begin{lstlisting}
l = [1,2,3, 4]; g = l[2:] # g = [3,4]
a = [12, 'g', -1] + ['e', '7'] # a = [12, 'g', -1, 'e', '7']
\end{lstlisting}
\item créer un dictionnaire (par exemple dic = \{\} et faire une boucle avec dic.update({clef:valeur}) avec pour clefs les éléments de \texttt{alpha} et pour valeurs les
elements de \texttt{decale}
\item avec une boucle sur la longueur de mot, crypter le mot. on vérifira que
\texttt{cesar(10, "ici") } renvoies bien "sms" et que \texttt{cesar(-10, "sms") } renvoies "ici".
\end{itemize}
\item écrire une fonction \texttt{vraisemblance} prenant en argument un dictionnaire (une liste de chaînes de caractères),
une phrase (liste de mots) et une clef, et qui compte le nombre de mots décodés présents dans le dictionnaire
\item en utilisant le squelette de programme fourni et le mini-dictionnaire, tenter de décoder la phrase suivante \\
\begin{center}
{\large \bf hi owasg acwbg zo dvmgweis eis zsg aohvg}
\end{center}
\vspace{0.5cm}
en cherchant une clef dont la vraisemblance est supérieure ou égale à 1.
\end{enumerate}
\textbf{Animation graphique}
Le but de cet exercice est de vous montrer comment la programmation peut intervenir dans une animation graphique simple ``d'images de synthèse''.
On considérera dans ce cadre, juste le coté géométrique de l'animation. Dans le squelette fourni en TP, on a déjà un début d'animation:
une sphère qui suit une trajectoire rectiligne.
Pour situer la sphère aux coordonnées $(x,y,z)$ dans le repère choisi, on utilisera l'instruction \texttt{sphereActor.SetPosition(x,y,z)}
Dans l'exemple donné, on fait varier la coordonnée $y$ de la sphère.
\begin{enumerate}
\item Faire tourner le programme. Pour régler la position de la caméra, utiliser
la souris et presser \texttt{e} pour lancer l'animation. Enlever le commentaire devant la ligne
\texttt{ren1.GetActiveCamera().Azimuth( 0.2 )} pour tourner autour de la scène durant l'animation
\item essayer de programmer un rebond quand on détecte des coordonnées $y$ négatives, en utilisant le schéma suivant
\begin{center}
\includegraphics[width=0.8\linewidth]{rebond.pdf}
\end{center}
On pourra utiliser un \texttt{if} dans la boucle en temps. Bien penser à remettre $y$ à zéro pour rebondir
\item programmer un rebond quand $y \geqslant H$
\item on introduit de la même façon les composantes $v_x$ et $v_z$ de la vitesse. Programmer les tests de bords ($x <0$, $z < 0$ et $x > L$, $z > P$)
\item on peut ajouter du frein $vx *= -\alpha$ où $\alpha < 1$ pour ralentir la balle quand elle rebondit.
\item voila, on a notre animation graphique. En allant regarder la documentation de VTK(\texttt{ www.vtk.org}), éditer le fichier \texttt{cree\_scene.py}
pour modifier les paramètres de l'animation (forme de la boule, couleurs de fond, etc...)
\end{enumerate}
\end{document}