Hello! What differs an app from a prgm, besides being found in different menus?

Apps are written in assembly (and possibly other languages) and compiled into machine code. They are stored in the Flash ROM and require a signing key to run on the calculator. Programs are written in TI-BASIC or Assembly and are executed in the RAM, they do not require a signing key. There is a program called Basic Builder to make apps from TI-BASIC programs, but it isn't that great.

Ok, thanks for the answer. 1 more question, not related to this thread.

What are the calculations to be applied to a 3d point A(x,y,z) to make it a 2d point B(x',y') with perpective projection for custom camera position C(x,y,z), camera orientation theta(x,y,z) and field of view correspondent to the screen area?

I can barely work with matrix algebra. Ive tried to understand the method described at Wikipedia > 3D Projection > Perspective projection, but i could not rly understand the concept of camera rotation, defined as theta_x,y,z, and i didnt understand at all the concept of "the viewer's position relative to the display surface" defined as e_x,y,z

Could u help me solving this question?

I do know matrix algebra may be useful, so although i dont know how do matrix algebra works, i guess it's ok if it runs faster.

This program projects a list of 3D coordinates in L1, L2, and L3, into a 2D space in L4, and L5:

```
ClrList L5,L6
~|LPR
[[1,0,0][0,cos(Ans(4)),~sin(Ans(4))][0,sin(Ans(4)),cos(Ans(4))]][[cos(Ans(5)),0,sin(Ans(5))][0,1,0][~sin(Ans(5)),0,cos(Ans(5))]][[cos(Ans(6)),~sin(Ans(6)),0][sin(Ans(6)),cos(Ans(6)),0][0,0,1]]->[A]
|LPR
[[Ans(1)][Ans(2)][Ans(3)]]->[B]
For([recursiven],1,dim(L1)
[A]*([[L1([recursiven])][L2([recursiven])][L3([recursiven])]]-[B]->[C]
|LPR(9)/Ans(3,1->M
M[C](1,1)-|LPR(7->L5([recursiven]
M[C](2,1)-|LPR(8->L6([recursiven]
End
```

and here is a program to help initialize the settings:

```
Menu("WINDOW SETTINGS","DEFAULT",A,"CUSTOM",B
Lbl A
{6,6,7,~.6,0,~.75,0,0,7->|LPR
Return
Lbl B
Disp "CAMERA POSITION
Input "X: ",A
Input "Y: ",B
Input "Z: ",C
Disp "CAMERA TARGET
Input "X: ",D
Input "Y: ",E
Input "Z: ",F
Disp "VIEWER POSITION
Input "X: ",G
Input "Y: ",H
Input "Z: ",I
B-E
{A,B,C,~tan^-1(Ans/(C-F)),0,~tan^-1(Ans/(A-D)),G,H,I->|LPR
Return
```

The numbers in |LPR are explained in the Wikipedia article, and are {c_{x}, c_{y}, c_{z}, θ_{x}, θ_{y}, θ_{z}, e_{x}, e_{y}, e_{z}}.

Ive tested it and it runs great. Thanks

I still dont understand what some of the variables mean.

So, cx, cy, cz represent the position of the camera.

θx, θy, θz represent the orientation of the camera. What is the meaning of, for example, entering 1 as θx?

I cant still understand quite well what do ex, ey, ez mean.

Is it a way to represent where from is the viewer seeing the projections in the plain? (The viewing direction being perpendicular to the plain)

That would be important to understand so i could make custom projections.