dwitter.net | #perspective

+ New dweet
function u(t) {
} //
122/140


Please log in (or register) to post a dweet (copy-paste the code somewhere safe to save it meanwhile)


u(t) is called 60 times per second. t: Elapsed time in seconds. S: Shorthand for Math.sin. C: Shorthand for Math.cos. T: Shorthand for Math.tan. R: Function that generates rgba-strings, usage ex.: R(255, 255, 255, 0.5) c: A 1920x1080 canvas. x: A 2D context for that canvas.
Try the new frontend: beta.dwitter.net
Current theme challenge: #Food
show FPS hide FPS share fullscreen

function u(t) {

}//
140/140


Please log in (or register) to post as a new dweet (copy-paste code somewhere safe to save it meanwhile).

Please log in (or register) to comment.

show FPS hide FPS share fullscreen

function u(t) {

}//
140/140


Please log in (or register) to post as a new dweet (copy-paste code somewhere safe to save it meanwhile).

  • u/f8f82804
    #d3 #sphere #perspective
  • u/katkip
    how lol
  • u/pavel
    I draw #default one pixel at a time and treat (x,y) of the pixels as angles (a,b) in spherical coordinates. Spherical to 3d cartesian is x=r*sin(a)*sin(b), y=r*cos(a)*sin(b), z=r*cos(b). Projecting 3d to 2d cartesian is x'=x/(2+y/r), y'=z/(2+y/r), and scaling pixel size by 1/(2+y/r)**2 so stuff in the back is smaller.

Please log in (or register) to comment.

show FPS hide FPS share 1 remix fullscreen

function u(t) {

}//
140/140


Please log in (or register) to post as a new dweet (copy-paste code somewhere safe to save it meanwhile).

  • u/pavel
    Here is 12 characters saved: c.width^=i=0;for(y of'111121012110')x.lineTo(960+y%2*S(p=t+1.6*'123403020140'[i++])*(z=1600/(3+y%2*C(p))),y*z);x.fill('evenodd')
  • u/f8f82804
    using 1.6 to approximate Math.PI/2 is OK, but you should change all the 4s to 0s in the second data string, just to minimze the aggregate angular error. I used 4 for clarity, because 1.57 is accurate enough that the error is hard to notice. With 1.6 you can notice that one edge is longer than the others. c.width^=i=0;for(y of'111121012110')x.lineTo(960+y%2*S(p=t+1.6*'123003020100'[i++])*(z=1600/(3+y%2*C(p))),y*z);x.fill('evenodd')

Please log in (or register) to comment.

show FPS hide FPS share 1 remix fullscreen

function u(t) {

}//
123/140


Please log in (or register) to post as a new dweet (copy-paste code somewhere safe to save it meanwhile).

Please log in (or register) to comment.


function u(t) {

}//
140/140


Please log in (or register) to post as a new dweet (copy-paste code somewhere safe to save it meanwhile).

Please log in (or register) to comment.

show FPS hide FPS share 1 remix fullscreen

function u(t) {

}//
125/140


Please log in (or register) to post as a new dweet (copy-paste code somewhere safe to save it meanwhile).

Please log in (or register) to comment.

show FPS hide FPS share 1 remix fullscreen

function u(t) {

}//
140/140


Please log in (or register) to post as a new dweet (copy-paste code somewhere safe to save it meanwhile).

  • u/f8f82804
    this dweet uses a better perspective transform based on Math.hypot -- #hypot
  • u/f8f82804
    The projection still isn't perfect, because I'm rotating the sphere's axis towards the viewer by positioning it below the camera. The resulting distortion is approximately corrected by scaling the Y coordinate with /.9.
  • u/f8f82804
    #perspective

Please log in (or register) to comment.


function u(t) {

}//
140/140


Please log in (or register) to post as a new dweet (copy-paste code somewhere safe to save it meanwhile).

Please log in (or register) to comment.

show FPS hide FPS share 1 remix fullscreen

function u(t) {

}//
133/140


Please log in (or register) to post as a new dweet (copy-paste code somewhere safe to save it meanwhile).

  • Show more comments…
  • u/rodrigo.siqueira
    This #illusion is called "bistable perception". When I posted it was looking like a cave, now it seems to keep changing between mountain top and cave. I prefer a cave.
  • u/sigveseb
    yes, I see it now!
  • u/rodrigo.siqueira
    #tunnel
  • u/joeytwiddle
    To see the mountaintop, maybe look at the blue and imagine it is the floor or the sea, far away.

Please log in (or register) to comment.

show FPS hide FPS share 1 remix fullscreen

function u(t) {

}//
140/140


Please log in (or register) to post as a new dweet (copy-paste code somewhere safe to save it meanwhile).

Please log in (or register) to comment.

Loading...
Next page