Conversion Lisp en c
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Conversion Lisp en c



  1. #1
    EauPure

    Conversion Lisp en c


    ------

    Bonjour,

    il y a plus de 30 ans que je n'ai pas fait du lisp et pour convertir la transparence dans un fichier dxf, il y a ce code en lisp

    (fix (- 100 (/ (lsh (lsh transparency 24) -24) 2.55)))

    ça doit ressembler à ça mais je cale sur le 2.55
    int alpha=(-100/ (transparency << 24) << -24)

    Aurez vous l’amabilité de me le traduire en c ?

    -----
    La béatitude est l'attitude de l’abbé : la théorie bleue

  2. #2
    EauPure

    Re : Conversion Lisp en c

    la syntaxe du lisp me reviens un peu, ça serait plutôt ça
    int alpha=100 - (transparency << 24 << -24)/ 255;
    La béatitude est l'attitude de l’abbé : la théorie bleue

  3. #3
    Bluedeep

    Re : Conversion Lisp en c

    Bonjour

    Pourquoi tenter de faire une conversion de code plutôt que repartir du problème et l'écrire en C ?

  4. #4
    EauPure

    Re : Conversion Lisp en c

    Parce que je n'ai que cet indice , ce n'est pas documenté dans la doc DXF car c'est un attribut de type AttDef normalement utilisé par d'autres applications qu'autocad.
    1001
    AcCmTransparency
    1071
    33554588

    J'ai fait un test mais transparency << 24 << -24 = 0 donc la traduction est mauvaise
    La béatitude est l'attitude de l’abbé : la théorie bleue

  5. A voir en vidéo sur Futura
  6. #5
    EauPure

    Re : Conversion Lisp en c

    Un autre indice c'est qu'avec transparency = 33554588
    (fix (- 100 (/ (lsh (lsh transparency 24) -24) 2.55))) devrait être égal à 38 dans DwgTrueView ou 39 dans DraftSight

    autre proposition c'est (fix (- 100 (/ (logand transparency -33554433) 2.55)))
    on aurait alors (fix (- 100 (/ (logand 33554588 -33554433) 2.55))) = 38

    et ça marche

    100 - (33554588 & -33554433)/ 2.55 = 38.823529411764703

    Il sont fou chez autodesk d'avoir inventé un codage aussi ubuesque pour la transparence à moins que ce soit un clin d’œil à la transparence dans l'information
    La béatitude est l'attitude de l’abbé : la théorie bleue

  7. #6
    EauPure

    Re : Conversion Lisp en c

    Maintenant je cherche la fonction inverse pour écrire un DXF avec transparence mais je bute sur le et logique dans l'équation

    transparency & -33554433 = (100 - alpha_pourcent) * 2.55 ;

    transparency = ?
    La béatitude est l'attitude de l’abbé : la théorie bleue

  8. #7
    Bluedeep

    Re : Conversion Lisp en c

    Le fait d'écrire des masquages en décimal n'aide pas à la compréhension.

  9. #8
    EauPure

    Re : Conversion Lisp en c

    et bien c'est comme une équation avec multiplication
    si transparency * -33554433 = (100 - alpha_pourcent) * 2.55 ;
    alors transparency =(100 - alpha_pourcent) * 2.55 / -33554433

    Mais avec la fonction et logique noté & en c++
    transparency =((100 - alpha_pourcent) * 2.55) & -33554433 ne marche pas
    car 33554588 != ((100 - 38.823529411764703) * 2.55) & -33554433 = 156
    La béatitude est l'attitude de l’abbé : la théorie bleue

  10. #9
    EauPure

    Re : Conversion Lisp en c

    Je pense avoir trouvé, l'inverse du et serait le ou exclusif
    ça marche au signe prés
    avec alpha=39
    ((long)((100 - alpha) * 2.55)) ^ -33554433 = -33554588
    La béatitude est l'attitude de l’abbé : la théorie bleue

Discussions similaires

  1. Lisp calcul matriciel
    Par alovesupreme dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 25/11/2012, 13h51
  2. Une question de débutant en lisp
    Par alovesupreme dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 10/06/2012, 15h05
  3. lisp: ou écrire les parenthèses?
    Par alovesupreme dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 01/06/2012, 18h21
  4. lisp dans maxima
    Par alovesupreme dans le forum Programmation et langages, Algorithmique
    Réponses: 4
    Dernier message: 15/02/2012, 21h39
  5. Conversion de base : connaître le nième chiffre sans faire toute la conversion
    Par RVmappeurCS dans le forum Mathématiques du supérieur
    Réponses: 5
    Dernier message: 02/07/2009, 19h14