## Courbe du Dragon (2)

La solution précédente nécessite que la tortue se téléporte ou qu'elle lève parfois le crayon pour tracer la courbe. En effet, entre la destination du trait tracé par le premier appel récursif ne correspond pas à la source du trait qui doit être tracé par le second appel récursif. C'est pourquoi il était nécessaire d'utiliser la méthode `setPos()`

Dans cette leçon, vous allez donc réaliser une méthode récursive qui permet de tracer la courbe du dragon sans lever le crayon. Pour ce faire, vous définirez une seconde méthode récursive qui trace la courbe à l'envers.

La méthode `dragon()` sera définie récursivement en fonction des méthodes `dragon()` et `dragonInverse()`. De même, la méthode `dragonInverse()` sera définie récursivement en terme de `dragon()` et de `dragonInverse()`. Voici un bien bel exemple de récursivité croisée.

Le prototype de la méthode `dragon()` reste le même que précédemment :

    [!java|c]void [/!]dragon([!java|c]int [/!]ordre[!scala]:Int[/!], [!java|c]double [/!]x[!scala]:Double[/!], [!java|c]double [/!]y[!scala]:Double[/!], [!java|c]double [/!]z[!scala]:Double[/!], [!java|c]double [/!]t[!scala]:Double[/!])

Les coordonnées (u, v) du nouveau point introduit par la méthode `dragon()` seront :

    u = (x + z)/2 + (t - y)/2
    v = (y + t)/2 - (z - x)/2

Le prototype de la méthode `dragonInverse()` est identique : :

    [!java|c]void [/!]dragonReverse([!java|c]int [/!]ordre[!scala]:Int[/!], [!java|c]double [/!]x[!scala]:Double[/!], [!java|c]double [/!]y[!scala]:Double[/!], [!java|c]double [/!]z[!scala]:Double[/!], [!java|c]double [/!]t[!scala]:Double[/!])

Les coordonnées (u, v) du nouveau point introduit par la méthode `dragonInverse()` seront :

    u = (x + z)/2 - (t - y)/2
    v = (y + t)/2 + (z - x)/2

Afin de rendre, plus visible le travail de chacune des deux méthodes récursives, le trait tracé par la méthode `dragon()` devra être rouge (`Color.red`) et le trait tracé par la méthode `dragonInverse` devra être bleu (`Color.blue`).

Consultez les objectifs de chaque monde pour comprendre comment écrire la fonction.