Sunday, January 25, 2015

HP Prime: Calculator Art

Programs will follow.  Enjoy!   Eddie  

DRAW3DCUBE:  3D Cube - not as easy as it seems.  
DRAW3DCUBE
DRAW3DCYN:  My first one I did this weekend.  This looks like a tall glass of water.


DRAW3DCYN
DRAW3DSPH:  Sphere.  I like the effect the HP Prime does with ARC in a FOR loop.


DRAW3DSPH

DRAW3DWAVE:  I wanted something to be drawn using a sine wave.  


DRAW3DWAVE

DRAWSUNSET - This is probably my favorite, since I like sunsets.  



DRAWSUNSET



Tip:  The HP Prime screen is 318 pixels wide and 240 pixels deep.  If you want to leave room for custom menus, then the canvas is 318 pixels by 218 pixels.  The x axis increases to the right, but unlike the Cartesian plane, the y axis increases downward instead of upward.  

Eddie

-------------
Programs:

DRAW3DCUBE

EXPORT DRAW3DCUBE()
BEGIN
LOCAL t,a,b,c,d,s;
RECT();
// coord
a:=159-50*COS(45°);
b:=109-50*SIN(45°);
c:=159+50*COS(45°)+1;
d:=159-50*SIN(45°);

// drawing
LINE_P(a+50*COS(45°),b-SIN(45°),a,b);
LINE_P(a,b,159,109);
LINE_P(159,109,c,b);
LINE_P(c,b,a+50*COS(45°),b-SIN(45°));

LINE_P(a,b,a,d);
LINE_P(a,d,159,159);
LINE_P(159,159,159,109);

LINE_P(159,159,c,d);
LINE_P(c,d,c,b);

// left/right side shade
FOR t FROM b TO d DO
LINE_P(a,t,159,t+50*SIN(45°),#FF0000h);
LINE_P(c,t,159,t+50*SIN(45°),#FFh);
END;

// top shade
FOR t FROM 1 TO 50 DO
LINE_P(a+t*COS(45°),b-t*SIN(45°),
a+t*COS(45°),b+t*SIN(45°),#FFFF00h);
END;

FOR t FROM 50 DOWNTO 1 DO
LINE_P(c-t*COS(45°),b-t*SIN(45°),
c-t*COS(45°),b+t*SIN(45°),#FFFF00h);
END;

WAIT(0);   // I prefer WAIT(0) to FREEZE;

END;

DRAW3DCYN

EXPORT DRAW3DCYN()
BEGIN
LOCAL t;
HAngle:=0;
RECT();
// cylinder shell
FOR t FROM 0 TO 100 STEP 1 DO

ARC_P(159,70+t,20,0,π,#7DF9FFh);

ARC_P(159,70+t,20,π,2*π,#1560BDh);
END;
// sides
LINE_P(139,70,139,170,#1560BDh);
LINE_P(179,70,179,170,#1560BDh);
ARC_P(159,70,20,0,2*π,#1560BDh);
WAIT(0);

END;



DRAW3DSPH

EXPORT DRAW3DSPH()
BEGIN
// 2015-01-22
LOCAL t;
RECT();

// sphere loop
FOR t FROM 100 DOWNTO 1 DO
ARC_P(159,109,t,0,2*π,#808080h);
END;

// outside
FOR t FROM 59 TO 259 DO
PIXON_P(t,−.0025*t^2+.795*t+70.975);
END;

WAIT(0);

END;

DRAW3DWAVE

EXPORT DRAW3DWAVE()
BEGIN
LOCAL t,a,b;
RECT();
HAngle:=0;

FOR t FROM 0 TO 318 DO
a:=25*SIN(3.95168887244ᴇ−2*t-π)+100;
b:=a+25;
PIXON_P(t,a,#FFh);
PIXON_P(t,b,#FFh);

LINE_P(t,a+1,t,b-1,#87CEEBh);
LINE_P(t,b+1,t,218,#964B00h);

END;

LINE_P(0,100,0,125,#FFh);
LINE_P(318,100,318,125,#FFh);

LINE_P(0,125,0,218,#D4AF37h);
LINE_P(318,125,318,218,#D4AF37h);
LINE_P(0,218,318,218,#D4AF37h);

WAIT(0);

END;



DRAWSUNSET

EXPORT DRAWSUNSET()
BEGIN

RECT(#87CEEBh);
LOCAL t,a,b;
HAngle:=0;

// sun
FOR t FROM 50 DOWNTO 40 DO
ARC_P(159,109,t,0,2*π,#FFA500h);
END;
FOR t FROM 40 DOWNTO 0 DO
ARC_P(159,109,t,0,2*π,#FFFF00h);
END;

// horizon
LINE_P(0,108,318,108);


// ground and water
FOR t FROM 0 TO 159 DO
a:=1.855525955687ᴇ−4*t^3
-5.05717802449ᴇ−2*t^2
+3.67070350319*t+109;
LINE_P(t,a,t,109,#80h);
LINE_P(t,a+1,t,242,#964B00h);
END;

FOR t FROM 159 TO 318 DO
a:=1.23858063728ᴇ−4*t^3
-9.61799073419ᴇ−2*t^2
+23.6382711212*t
-1664.83052851;
LINE_P(t,a,t,109,#80h);
LINE_P(t,a+1,t,242,#964B00h);
END;

// lines
LINE_P(120,111,188,111,#C0C0C0h);
LINE_P(125,113,183,113,#C0C0C0h);
LINE_P(130,115,178,115,#C0C0C0h);
LINE_P(135,117,173,117,#C0C0C0h);

WAIT(0);
END;


This blog is property of Edward Shore.  2015



No comments:

Post a Comment

Retro Review: HP 95LX

Retro Review:  HP 95LX Essentials Company:  Hewlett Packard Years:  1991 - 2003 Type:  Palmtop PC (a very early versi...