Calculator Community > TI Calculators

Unfinished TI-84 CE 3d Grapher (ICE)

(1/1)

johnbchron:
[this post may or may not be categorized correctly]


I am in the process of making a 3D graphing utility in ICE C for the TI-84 CE. It can do limited graphing, but at least it displays something that makes some sense. Please review my code to make comments, suggestions, and anything else you might want to say as it nears completion (Please keep in mind that this is one of my first real projects in ICE). Thanks! (also please tell me how to take a screenshot of an ice program while it is running)

EDIT: I hope someday to have it graph the complex plane


<http://sc.cemetech.net/?hash=flG8hpva75MC9gh1gKc3ZgBZGUMd>



--- Code: ---
[i]GRAPH3D


0->XD
0->YD


50->X
50->Y
50->Z


173->CONSTC


Begin)
SetDraw(1)


FillScreen(255)
Blit(1)
Call EVAL
FillScreen(255)
Call BOUTLINE
Call FOUTLINE
Call GRAPH
Call FOUTLINE
Blit(1)
Repeat getKey(15)
End
det(1)
Return


Lbl EVAL
Alloc(100*100*3)->A
For(Z,0,99)
FillScreen(255)
PrintStringXY("Calculating...",5,5)
SetTextXY(5,15)
PrintUInt(Z,3)
PrintString(" percent")
Blit(1)
For(X,0,99)

X-50->X
[i](sin(X*256/100)*25/256)+(cos(Z*256/100)*25/256)+50->{A+(X+(Z*100))*3}
16777216-(16777216-(X*X)/25)+50-(Z*Z/32)->{A+(X+50+(Z*100))*3}
[i](X*X/25+50)-Z/4
[i]->{A+(X+50+(Z*100))*3}
X+50->X

End
End
Return


Lbl FOUTLINE
SetColor(0)
Line(160,220,160+(CONSTC/2),220-50)
Line(160,120,160+(CONSTC/2),120-50)
Line(160,220,160-(CONSTC/2),220-50)
Line(160,120,160-(CONSTC/2),120-50)
Line(160-(CONSTC/2),120-50,160-(CONSTC/2),120+50
Line(160+(CONSTC/2),120-50,160+(CONSTC/2),120+50
Line(160,120,160,120+100)
Line(160,20,160+(CONSTC/2),20+50)
Line(160,20,160-(CONSTC/2),20+50)


Return


Lbl BOUTLINE
Line(160,20,160,220)
Line(160-(CONSTC/2),20+50,160+(CONSTC/2),220-50)
Line(160-(CONSTC/2),220-50,160+(CONSTC/2),20+50)
Return


Lbl GRAPH
For(Z,0,99)
For(X,0,99)
{A+(X+(Z*100))*3}->YA
If (YA<150)

If X<100
{A+(X+1+(Z*100))*3}->YB
Else
YA->YB
End
If Z<100
{A+(X+((Z+1)*100))*3}->YC
Else
YA->YC
End
SetColor((Z*8/100)+144)
If not(XD) and not(YD)
SetPixel((160-(CONSTC/2)+(CONSTC/2*X/100)+(CONSTC/2*Z/100)),(220-50-YA-(50*X/100)+(50*Z/100)))
End
If XD
Line((160-(CONSTC/2)+(CONSTC/2*X/100)+(CONSTC/2*Z/100)),(220-50-YA-(50*X/100)+(50*Z/100)),(160-(CONSTC/2)+(CONSTC/2*(X+1)/100)+(CONSTC/2*Z/100)),(220-50-YB-(50*(X+1)/100)+(50*Z/100)))
End
If YD
Line((160-(CONSTC/2)+(CONSTC/2*X/100)+(CONSTC/2*Z/100)),(220-50-YA-(50*X/100)+(50*Z/100)),(160-(CONSTC/2)+(CONSTC/2*X/100)+(CONSTC/2*(Z+1)/100)),(220-50-YC-(50*X/100)+(50*(Z+1)/100)))
End
End
End
Blit(1)
If getKey(15)
Return
End
End
Return

--- End code ---

Xeda112358:
To get a screenshot, you can use the Capture option in CEmu.

johnbchron:

*this is graphing Y = (X/5)2 - (Z/4)2, where -50 < X < 50, and 0 < Z < 100. (posted code)

Xeda112358:
Wow, that's pretty cool!

Navigation

[0] Message Index

Go to full version