à dessiner des chapeaux

Les derniers trucs auxquels vous avez joué, les derniers ordinateurs que vous avez bidouillés.

Modérateur : Politburo

Répondre
Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1549
Enregistré le : 21 août 2016 19:04

à dessiner des chapeaux

Message par Ben »

Salut,

J'ai ramassé un code sur le net pour dessiner des "chapeaux"

Voici le code sur C-128

Code : Tout sélectionner

10 graphic 1,1
20 dr=3.1415/180
30 for r=5 to 330 step 10
40 for t=0 to 360 step 10
50 x=r*cos(t*dr)*.3
60 y=r*sin(r*dr)*.3
70 z=r*sin(t*dr)*.3
80 xp=x+(cos(15*dr)*z)
90 yp=y+(sin(15*dr)*z)
100 xp=160+xp
110 yp=60-yp
120 draw 1,xp,yp
130 next:next
140 input a$
150 graphic 0
Voici ce que ça donne sur le C-128
HatC128.png
HatC128.png (121.47 Kio) Vu 17837 fois
Sur le Vic-20
HatVic20.png
HatVic20.png (22.28 Kio) Vu 17837 fois
Et sur le PB-700
HatPB700R.jpg
HatPB700R.jpg (110.98 Kio) Vu 17837 fois
Avatar du membre
leglatin
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 761
Enregistré le : 03 févr. 2003 19:46
Localisation : Berville-sur-Mer (27)
Contact :

Re: à dessiner des chapeaux

Message par leglatin »

Sympa !
Commodore 7970 - Texas Instruments TI-30, 57, 60, 66, 74, 76.fr, 80, 81, 82, 82 Stats.fr, 83, 85, 86, 89, 92 - Casio PB-100, PB-110, PB-410, PB-500, PB-700, PB-770, FX-180Pv, FX-7500G, FC-200, FA-3, FA-4, FA-5, FA-10, FA-11, FA-20, FP-12, CM-1, OR-1, OR-1(E), OR-4, OR-8, RC-2, RC-4 - Canon X-07 - Psion Series 5 mx - PalmOne Tungsten E2 - Compaq iPAQ H3900 - HP iPAQ HX2110 - Philips VG8020, NMS8255, VY0010, VY0011, VS0080, D6450, VW0030, SBC3810, NMS1112, NMS1150, NMS1170 - Atari 1040 STE
Avatar du membre
ledudu
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 5633
Enregistré le : 26 mars 2009 13:07
Localisation : Ile de France
Contact :

Re: à dessiner des chapeaux

Message par ledudu »

Sympa !

Je peux mettre la photo du PB-700 sur mon site ?
je veux bien le code aussi :)

Merci,
Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1549
Enregistré le : 21 août 2016 19:04

Re: à dessiner des chapeaux

Message par Ben »

ledudu a écrit : 24 févr. 2018 11:15 Sympa !

Je peux mettre la photo du PB-700 sur mon site ?
je veux bien le code aussi :)

Merci,
Ah oui, bien sûr. Je dois encore avoir la photo originale, si tu veux.

Le code est très semblable à la version Commodore. Juste quelques ajustement:

Code : Tout sélectionner

5 cls
30 for r=5 to 170 step 10
40 for t=0 to 360 step 10
50 x=r*cos(t)*.15
60 y=r*sin(r)*.15
70 z=r*sin(t)*.15
80 p=x+(cos(15)*z)
90 o=y+(sin(15)*z)
100 p=p+90:o=o+5
120 draw (p,o)
130 next t:next r
140 beep 1
150 goto 150
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3405
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: à dessiner des chapeaux

Message par C.Ret »

Super sympa, je viens de dépoussiérer mon C128D pour le rallumer à cette occasion ! :tongue:


J'en ai profité pour brancher sur la sortie vidéo 40 colonnes une petite télévision portative couleur THOMSON ayant un écran de 14".
Elle est à peine plus encombrante que mon moniteur C= 1084 qui maintenant peut rester en permanence en mode RGB pour assurer l'affichage 80 col.


Le Commodore C182D connaît la valeur de PI, j'ai donc pu simplifier le programme de Ben. C'est l'avantage de pouvoir recopier à partir d'un code qui a déjà été bien éprouvé, on peut faire plus concis. J'obtiens exactement le même affichage graphique sur l'écran 40 col. que la capture d'émulateur de Ben , mais uniquement en divisant le pas des boucles FOR pour R et T par deux (5 au lieu de 10).

Code : Tout sélectionner

10 SLOW:COLOR 0,RCLR(6):COLOR 4,RCLR(0):COLOR 1,RCLR(5):GRAPHIC 1,1
20 CS=SIN(π/12):CC=COS(π/12):FOR R=1.5 TO 99 STEP 1.5:Y=R*SIN(π*R/54)
30 FOR T=0 TO 355 STEP 5:A=π*T/180:X=R*COS(A):Z=R*SIN(A)
40 DRAW 1,160+X+Z*CC,60-Y-Z*CS:NEXT T,R:GRAPHIC 5
Explications:

Ligne 10: crée l'affichage graphique HD en (320x200 pixels) sur la sortie composite 40 col. en utilisant les couleurs de fond et d'écriture de l'écran RGB 80 col.

Ligne 20: Pré-calcul des deux SIN et COS constants pour la projection. Boucle FOR R mise à l'échelle pour faire disparaître le facteur .3 et pré-calculer la valeur de Y qui ne dépend pas de T.

Ligne 30: Boucle FOR T identique au programme de Ben et calcul de X et Y

Ligne 40: Affichage du pixel graphique à l'aide de l'instruction DRAW sans utiliser les variables intermédiaires XP et YP et boucles successives de T et R.
L'instruction GRAPHIC 5 est facultative, elle permet d'afficher le READY. et le curseur sur l'écran 80 col. au cas où le programme ait été lancé depuis l'affichage texte 40 col. qui n'est plus visible.

L'avantage d'avoir les deux écrans disponibles et que l'on peut programmer sur l'écran 80 col. alors que le graphique et persistant sur l'autre écran.
Une caractéristique assez rare même de nos jour, les Commodore C128 ont deux sorties écrans simultanées. Mais en interne, il y a bien trois écrans indépendants : les deux terminaux texte 40 et 80 col. et l'affichage graphique soit HD (mode 1) ou Color (mode 3) recouvrant complètement (mode 1 et 3) ou non (mode 2 et 4) le terminal texte 40 col.

Utilisation:
Basculer sur l'écran 80 col éventuellement en pressant [ESC][ X ]
Sélectionner une couleur d'écriture à l'aide des touches de sélection.
La couleur du curseur sera celle du "chapeau" tracé
Lancer le programme par la commande RUN validée par [RETURN] ou [ENTER]

Profitez alors de près de 9 min de pur bonheur savoureux mais quelque peu hypnotique en observant comment le "chapeau" se dessine point par point dans une délicieuse (à défaut d'être rapide) farandole bien régulière.

La fin du programme est indiquée par l'apparition du curseur clignotant au début de la ligne juste en dessous de l'indication READY.

I ♥ C=

P.S.: Une version one liner est possible

Code : Tout sélectionner

1 GRAPHIC1,1:S=SIN(π/12):C=COS(π/12):FORR=1.5TO99STEP1.5:A=π*R/54:FORB=0TO6.2ST
EP.1:DRAW1,160+R*(COS(B)+C*SIN(B)),60-R*(SIN(A)+S*SIN(B)):NEXT:NEXT:GRAPHIC5
EDITé:
Patienter près de 9 min on observant comment le "chapeau" se dessine point par point
Modifié en dernier par C.Ret le 24 févr. 2018 17:25, modifié 4 fois.
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1549
Enregistré le : 21 août 2016 19:04

Re: à dessiner des chapeaux

Message par Ben »

C.Ret, c'est toujours un plaisir de te lire :-)
C.Ret a écrit : 24 févr. 2018 15:41 Patienter près de 9 min on observant comment le "chapeau" se dessine point par point
C'est encore marrant de le voir se dessiner tout doucement :-)
Avatar du membre
ledudu
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 5633
Enregistré le : 26 mars 2009 13:07
Localisation : Ile de France
Contact :

Re: à dessiner des chapeaux

Message par ledudu »

Image
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3405
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: à dessiner des chapeaux

Message par C.Ret »

Ledudu, il est mexicain ton chapeau ?

A non ! Nippon :)
Ben a écrit : 24 févr. 2018 16:55 C'est encore marrant de le voir se dessiner tout doucement :-)
C'est un plaisir dont je ne me prive pas, même 30 ans après les tous premiers émois.

Cela me rappelle les premiers programmes que j'écrivais en parcourant le manuel de mon nouvel ordi :

Code : Tout sélectionner

100 COLOR 0,1:COLOR 4,1:COLOR 1,6:GRAPHIC 1,1
110 E%=100:A%=160:B%=100:S=.025
120 DO
130 :  R%=P%:P%=1+Q%        : S%=Q%:Q%=1+11*RND(1)
140 :  X1%=A%:Y1%=B%+E%     : X0%=X1%:Y0%=Y1%
150 :  FOR T=S TO 2*π STEP S
160 :  :  X%=A%+E%*SIN(T*R%): Y%=B%+E%*COS(T*S%) : DRAW  0 , X0%,Y0% TO X%,Y% : X0%=X% : Y0%=Y%
190 :  :  X%=A%+E%*SIN(T*P%): Y%=B%+E%*COS(T*Q%) : DRAW  1 , X1%,Y1% TO X%,Y% : X1%=X% : Y1%=Y%
220 :  NEXT T
230 LOOP
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1549
Enregistré le : 21 août 2016 19:04

Re: à dessiner des chapeaux

Message par Ben »

Sur un ZX-81, c'est pas beaucoup mieux que sur le PB-700 ;-)
HatZX-81
HatZX-81
HatZX81.png (17.85 Kio) Vu 17742 fois
Avatar du membre
phm
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1361
Enregistré le : 08 avr. 2016 18:36
Localisation : Est Parisien

Re: à dessiner des chapeaux

Message par phm »

Bravo pour les photos ...
ça rappel des souvenirs
HEWLETT-PACKARD : The best
CANON
X-07 X-730 X-711 XR-100 XM-101 XP-110F XP-120F XP-130F XP-140

AMSTRAD CPC-464 CPC-6128 ATARI STF DAI Indata
Avatar du membre
zpalm
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2919
Enregistré le : 03 mai 2008 15:33
Localisation : Grenoble

Re: à dessiner des chapeaux

Message par zpalm »

Intéressant !! En reprenant les optimisations de C.Ret, voici une version pour la HP Prime et une pour la DM42 (à exécuter en mode RAD et 400x240).
Temps d'exécution: 2,8s sur la Prime, 8s sur la DM42 alimentée par USB (48MHz) et 18,5s sur la DM42 alimentée par la pile (12MHz).

Code : Tout sélectionner

EXPORT Chapeau()
BEGIN
LOCAL r,t,x,y,z,xp,yp;
LOCAL cs:=SIN(π/12),cc:=COS(π/12);
RECT_P(0);
FOR r FROM 1.5 TO 99 STEP 1.5 DO
 y:=r*SIN(r*π/54);
 FOR t FROM 0 TO 360 STEP 5 DO
  x:=r*COS(t*π/180);
  z:=r*SIN(t*π/180);
  xp:=160+x+(cc*z);
  yp:=80-(y+(cs*z));
  PIXON_P(xp,yp,RGB(0,255,0));
 END;
END;
FREEZE;
END;
chapeau.png
chapeau.png (5.23 Kio) Vu 17713 fois

Code : Tout sélectionner

00 { 114-Byte Prgm }
01▸LBL "Chap"
02 PI
03 180
04 ÷
05 STO 04
06 15
07 ×
08 SIN
09 STO 00
10 LASTX
11 COS
12 STO 01
13 CLLCD
14 1.5
15 STO 02
16▸LBL 01
17 PI
18 54
19 ÷
20 RCL× 02
21 SIN
22 RCL× 02
23 STO 05
24 0.36005
25 STO 03
26▸LBL 02
27 RCL 03
28 IP
29 RCL× 04
30 SIN
31 LASTX
32 COS
33 RCL× 02
34 X<>Y
35 RCL× 02
36 STO 06
37 RCL× 01
38 +
39 200
40 +
41 80
42 RCL 06
43 RCL× 00
44 RCL+ 05
45 -
46 X<>Y
47 PIXEL
48 ISG 03
49 GTO 02
50 1.5
51 STO+ 02
52 99
53 RCL- 02
54 X≥0?
55 GTO 01
56 END
chapeau_dm42.png
chapeau_dm42.png (4.11 Kio) Vu 17713 fois
(Sympa la nouvelle fonction d'import d'images du forum :D )
Avatar du membre
kweeky
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1777
Enregistré le : 05 oct. 2007 19:46
Localisation : Pas très loin de Bordeaux

Re: à dessiner des chapeaux

Message par kweeky »

Je n'aurai qu'un mot : chapeau ! :mrgreen:
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3405
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: à dessiner des chapeaux

Message par C.Ret »

Ah !

Intéressant la version HP-prime dont l'instruction FREEZE vient jouer le même rôle que les ancestraux WAIT, GETKEY et autres boucles qui figeaient en leur temps les affichages de nos Commodores !


Mais sur l'HP prime, il y a d'autres façons de faire des chapeaux :
HP Prime - Graphique 3D - Couleurs selon hauteur
HP Prime - Graphique 3D - Couleurs selon hauteur
chapeau_HP_prime_02.png (9.99 Kio) Vu 17641 fois
HP Prime - Graphique 3D - Couleurs en damier
HP Prime - Graphique 3D - Couleurs en damier
chapeau_HP_prime_01.png (12.38 Kio) Vu 17641 fois
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1549
Enregistré le : 21 août 2016 19:04

Re: à dessiner des chapeaux

Message par Ben »

Ca devient artistique tout ça :-)
Avatar du membre
Hobiecat
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3626
Enregistré le : 06 sept. 2011 14:57
Localisation : Normandie

Re: à dessiner des chapeaux

Message par Hobiecat »

C.Ret a écrit : 26 févr. 2018 09:46Mais sur l'HP prime, il y a d'autres façons de faire des chapeaux :
C'est du tracé de courbe "direct", je suppose ?
Modifié en dernier par Hobiecat le 26 févr. 2018 15:45, modifié 1 fois.
Répondre

Retourner vers « A quoi t'as joué hier ? »