Advertisement
Guest User

Untitled

a guest
Jun 28th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.98 KB | None | 0 0
  1. ;;3D
  2. alias § {
  3. if (!$window(@3D)) { window -pkdC @3D -1 -1 300 300 | set %3dvx 2 | set %3dvy 1 | .timer§ -m 0 10 § 2 1 }
  4. var %ticks = $ticks
  5. var %dots = -50,50,50 50,50,50 50,-50,50 -50,-50,50 -50,50,-50 50,50,-50 50,-50,-50 -50,-50,-50
  6. var %face = 1 2 3 4.8 7 6 5.4 3 7 8.5 6 2 1.3 2 6 7.8 5 1 4
  7. ;var %dots = -100,100,100 100,100,100,100 100,-100,100 -100,-100,100 -0.1,0.1,-0.1 0.1,0.1,-0.1 0.1,-0.1,-0.1 -0.1,-0.1,-0.1
  8. ;var %face = 1 2 3 4.8 7 6 5.4 3 7 8.5 6 2 1.3 2 6 7.8 5 1 4
  9. $iif($1 != $null,inc %angx $1,set %angx 50) | $iif($2 != $null,inc %angy $2,set %angy 150)
  10. var %w = 1
  11. drawrect -rfn @3D 16777215 1 0 0 $window(@3D).w $window(@3D).h
  12. while (%w <= $numtok(%dots,32)) {
  13. tokenize 44 $token(%dots,%w,32)
  14. var %x [ $+ [ %w ] ] $xyz($1,$2,$3,%angx,%angy).x
  15. var %y [ $+ [ %w ] ] $xyz($1,$2,$3,%angx,%angy).y
  16. inc %w
  17. }
  18. %w = 1
  19. while (%w <= $numtok(%face,46)) {
  20. tokenize 32 $token(%face,%w,46)
  21. var %dx1 = %x [ $+ [ $1 ] ],%dx2 = %x [ $+ [ $2 ] ],%dx3 = %x [ $+ [ $3 ] ],%dx4 = %x [ $+ [ $4 ] ]
  22. var %dy1 = %y [ $+ [ $1 ] ],%dy2 = %y [ $+ [ $2 ] ],%dy3 = %y [ $+ [ $3 ] ],%dy4 = %y [ $+ [ $4 ] ]
  23. if ($calc((%dx2 - %dx1) * (%dy3 - %dy1) - (%dy2 - %dy1) * (%dx3 - %dx1)) > 0) {
  24. var %3df = $calc(($v1 /50) % 256)
  25. drawline -rn @3D 0 1 %dx1 %dy1 %dx2 %dy2 %dx3 %dy3 %dx4 %dy4 %dx1 %dy1
  26. drawfill -rn @3D $replacex(%w,1,%3df,2,$rgb(0,%3df,0),3,$rgb(0,0,%3df),4,$rgb(%3df,%3df,0),5,$rgb(0,%3df,%3df),6,$rgb(%3df,0,%3df)) 0 $calc((%dx1 + %dx3)/2) $calc((%dy1 + %dy3)/2)
  27. drawtext -rn @3D 46080 tahoma 12 5 $calc((%w -1) *10+2) » %w $round($v1,0)
  28. }
  29. else { drawtext -rn @3D 255 tahoma 12 5 $calc((%w -1) *10+2) » %w }
  30. inc %w
  31. }
  32. if (%3dvx || %3dvy) { drawtext -rn @3D 16711935 tahoma 12 5 $calc($window(@3D).h - 80) » %3dvx %3dvy }
  33. drawtext -rn @3D 11796480 tahoma 12 5 $calc($window(@3D).h - 60) %angx $+ °   %angy $+ °
  34. tokenize 3 $round($calc(1000 / ($ticks - %ticks +1)),0) fps
  35. drawtext -rn @3D 0 tahoma 12 $calc($window(@3D).w -20- $width($1,tahoma,12)) 5 $1
  36. drawdot @3D
  37. }
  38. alias -l xyz {
  39. if ($prop == x) { return $calc(($window(@3D).w / 2)+ ($1 * $sin($4).deg + $2 * $cos($4).deg)) }
  40. if ($prop == y) { return $calc(($window(@3D).h / 2)+ ($1 * $cos($4).deg * $sin($5).deg - $2 * $sin($4).deg * $sin($5).deg + $3 * $cos($5).deg)) }
  41. }
  42. menu @3D {
  43. sclick:{ .timer§ off | set %3dx $mouse.x | set %3dmx $mouse.x | set %3dy $mouse.y | set %3dmy $mouse.y | set %3dt $ticks }
  44. mouse:{ if ($mouse.key & 1) { § $calc($mouse.x - %3dmx) $calc(%3dmy - $mouse.y) | set %3dmx $mouse.x | set %3dmy $mouse.y } }
  45. uclick:{
  46. var %3dvt = $ticks - %3dt
  47. set %3dvx $round($calc(($mouse.x - %3dx) *10/ %3dvt),0)
  48. set %3dvy $round($calc((%3dy - $mouse.y) *10/ %3dvt),0)
  49. if (%3dvx || %3dvy) { .timer§ -m 0 10 § %3dvx %3dvy }
  50. else { .timer§ off }
  51. }
  52. leave:{ unset %3dx %3dy %3dt %3dmx %3dmy }
  53. }
  54. on *:close:@3D:{ .timer§ off | unset %angx %angy %3dx %3dy %3dt %3dmx %3dmy %3dvx %3dvy }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement