à 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 : 1355
Inscription : 21 août 2016 19:04

à dessiner des chapeaux

Message par Ben » 24 févr. 2018 10:56

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) Consulté 4103 fois
Sur le Vic-20
HatVic20.png
HatVic20.png (22.28 Kio) Consulté 4103 fois
Et sur le PB-700
HatPB700R.jpg
HatPB700R.jpg (110.98 Kio) Consulté 4103 fois

Avatar de l’utilisateur
leglatin
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 726
Inscription : 03 févr. 2003 20:46
Localisation : A proximité de Deauville (14)
Contact :

Re: à dessiner des chapeaux

Message par leglatin » 24 févr. 2018 11:38

Sympa !
Commodore 7970 - Texas Instruments TI-30, 57, 80, 81, 82, 83, 85, 86, 89, 92 - Casio PB-100, PB-110, PB-410, PB-500, PB-700, PB-770, FA-3, FA-4, 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 - Philips VG8020, NMS8255, VY0010, VY0011, VS0080, D6450, VW0030, SBC3810, NMS1112, NMS1150, NMS1170 - Atari 1040 STE

Avatar de l’utilisateur
ledudu
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4535
Inscription : 26 mars 2009 14:07
Localisation : Ile de France
Contact :

Re: à dessiner des chapeaux

Message par ledudu » 24 févr. 2018 12:15

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 : 1355
Inscription : 21 août 2016 19:04

Re: à dessiner des chapeaux

Message par Ben » 24 févr. 2018 15:04

ledudu a écrit :
24 févr. 2018 12: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 de l’utilisateur
C.Ret
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1991
Inscription : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: à dessiner des chapeaux

Message par C.Ret » 24 févr. 2018 16:41

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
Dernière édition par C.Ret le 24 févr. 2018 18:25, édité 4 fois.
SHARP PC-1211 + CE-121 + CE-122. | VIC 20 Commodore 128D + Printer P-803. | TI-57 LCD | TI-74 BasiCalc | TI-92 II | HP-28S + HP82240A | HP-41C + (2 memory + stat + IR) modules. | HP Prime Wireless Graphing Calculator |HP-15C | CASIO fx-602p + FA-1. .Sommaire des M.P.O.. . Sommaire du P.C.T.M. .

Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1355
Inscription : 21 août 2016 19:04

Re: à dessiner des chapeaux

Message par Ben » 24 févr. 2018 17:55

C.Ret, c'est toujours un plaisir de te lire :-)
C.Ret a écrit :
24 févr. 2018 16: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 de l’utilisateur
ledudu
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4535
Inscription : 26 mars 2009 14:07
Localisation : Ile de France
Contact :

Re: à dessiner des chapeaux

Message par ledudu » 24 févr. 2018 18:02

Image

Avatar de l’utilisateur
C.Ret
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1991
Inscription : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: à dessiner des chapeaux

Message par C.Ret » 24 févr. 2018 18:12

Ledudu, il est mexicain ton chapeau ?

A non ! Nippon :)
Ben a écrit :
24 févr. 2018 17: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 + CE-121 + CE-122. | VIC 20 Commodore 128D + Printer P-803. | TI-57 LCD | TI-74 BasiCalc | TI-92 II | HP-28S + HP82240A | HP-41C + (2 memory + stat + IR) modules. | HP Prime Wireless Graphing Calculator |HP-15C | CASIO fx-602p + FA-1. .Sommaire des M.P.O.. . Sommaire du P.C.T.M. .

Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1355
Inscription : 21 août 2016 19:04

Re: à dessiner des chapeaux

Message par Ben » 24 févr. 2018 20:12

Sur un ZX-81, c'est pas beaucoup mieux que sur le PB-700 ;-)
HatZX81.png
HatZX-81
HatZX81.png (17.85 Kio) Consulté 4008 fois

Avatar de l’utilisateur
phm
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 804
Inscription : 08 avr. 2016 18:36
Localisation : Est Parisien

Re: à dessiner des chapeaux

Message par phm » 24 févr. 2018 20:40

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 de l’utilisateur
zpalm
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2499
Inscription : 03 mai 2008 15:33
Localisation : Grenoble

Re: à dessiner des chapeaux

Message par zpalm » 25 févr. 2018 02:33

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) Consulté 3979 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) Consulté 3979 fois
(Sympa la nouvelle fonction d'import d'images du forum :D )

Avatar de l’utilisateur
kweeky
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1613
Inscription : 05 oct. 2007 19:46
Localisation : Pas très loin de Bordeaux

Re: à dessiner des chapeaux

Message par kweeky » 25 févr. 2018 11:42

Je n'aurai qu'un mot : chapeau ! :mrgreen:

Avatar de l’utilisateur
C.Ret
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1991
Inscription : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: à dessiner des chapeaux

Message par C.Ret » 26 févr. 2018 10:46

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 :
chapeau_HP_prime_02.png
HP Prime - Graphique 3D - Couleurs selon hauteur
chapeau_HP_prime_02.png (9.99 Kio) Consulté 3907 fois
chapeau_HP_prime_01.png
HP Prime - Graphique 3D - Couleurs en damier
chapeau_HP_prime_01.png (12.38 Kio) Consulté 3907 fois
SHARP PC-1211 + CE-121 + CE-122. | VIC 20 Commodore 128D + Printer P-803. | TI-57 LCD | TI-74 BasiCalc | TI-92 II | HP-28S + HP82240A | HP-41C + (2 memory + stat + IR) modules. | HP Prime Wireless Graphing Calculator |HP-15C | CASIO fx-602p + FA-1. .Sommaire des M.P.O.. . Sommaire du P.C.T.M. .

Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1355
Inscription : 21 août 2016 19:04

Re: à dessiner des chapeaux

Message par Ben » 26 févr. 2018 11:34

Ca devient artistique tout ça :-)

Avatar de l’utilisateur
Hobiecat
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2926
Inscription : 06 sept. 2011 14:57
Localisation : Normandie / Antwerpen

Re: à dessiner des chapeaux

Message par Hobiecat » 26 févr. 2018 12:51

C.Ret a écrit :
26 févr. 2018 10:46
Mais sur l'HP prime, il y a d'autres façons de faire des chapeaux :
C'est du tracé de courbe "direct", je suppose ?
Dernière édition par Hobiecat le 26 févr. 2018 16:45, édité 1 fois.

Répondre

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