jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Une formule pour les dessiner tous Mer 24 Jan 2024 - 7:50 | |
| Déjà évoquée à propos des dessins de papydall, la fonction de Piantadosi permet de tracer n'importe quelle courbe à l'aide d'un seul paramètre et avec une précision donnée. Voici un exemple avec le lion de papydall : - Code:
-
' ******************************************************* ' Dessin d'une courbe par la fonction de Piantadosi : ' fp(i) = sin^2 [2^(k * i) * asin(sqr(p))] ' i = indice du point (0..N) ' k = nombre de bits ' p = parametre (multiprecision) ' Voir https://arxiv.org/abs/1904.12320 ' *******************************************************
set_mpfr_prec 1000
const NP = 180 const BITS = 12
dim px!, py!, i%, x, y
px = "0.8102483908320475993912132574491094982065862452817327150037178954760076843778794012744999492758607586773027250407956184635432705495034297975992720757361439916715880214205675495733533474788747094377182133012509211684495055252444086936252681612526275968346601593331040909396158395968304695018475861941281774288577860720723216121356475028998782467578495807413207613813497402989982182648996480648129630059302405194261119427998580543542338722078661151221629825546310080430505133513510745090107732938677747369207905081618664797121518001567709053554535480770491165870430844569002472291369935867748921124376353759973415214326143173932236669157900305069579128514186792302042986299152719806143733433931456605253138045961926707565279" py = "0.2863386093995344315322974213740827277491224308755292041623722854515916083289652324106452553545523723012206383625461092169449216698308513241219532787547881277271414385278646664415269480826323709861599235246317084634614089481805319416223656629389688608199931699178460807478090934470372807639387249915299003529189067721892885425672271795799776452013032404381746208483764095451044329978999870640403556041335805156048290036113812412159744462362739321344885186012128588237295027255959758015687886909311755118782959480683058863271488360745572823098452047701471485414379508236849557205014322852133133088560122004819664787436123720003611933460206711200239112029975862903707704543290773717905967843410418835735125077047287890669997"
mode 2, "Fonction de Piantadosi"
for i = 0 to NP x = fp(BITS, px, i) y = fp(BITS, py, i) pie x * 620 + 10, y * 380 + 10, 4 next i
img_save "lion.png"
while inkey() = "" : wend
' -------------------------------------------------------
function fp(k%, p!, i%) ' Fonction de Piantadosi
dim s! s = sin(mpfr(2)^(k * i) * asin(sqr(p))) return mpfr_to_dbl(s * s) end_function
Et voici le résultat : Un tutoriel sera publié prochainement. D'ici là, je vous laisse chercher le "truc" ! | |
|
jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Une formule pour les dessiner tous Ven 26 Jan 2024 - 8:14 | |
| Le truc, c'est que le paramètre p est constitué par la suite des valeurs du tableau, arrondies à un nombre donné de bits. Exemple avec 8 bits. On perd un peu en précision mais l'image reste lisible. Le taux de compression est important. Normalement un réel est codé sur 64 bits. Donc ici on a une compression à 1/8 | |
|