43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Factor
		
	
	
 | 
						|
USING: kernel combinators sequences opengl.gl
 | 
						|
       ui.render ui.gadgets ui.gadgets.slate
 | 
						|
       accessors ;
 | 
						|
 | 
						|
IN: ui.gadgets.cartesian
 | 
						|
 | 
						|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 | 
						|
 | 
						|
TUPLE: cartesian < slate x-min x-max y-min y-max z-min z-max perspective ;
 | 
						|
 | 
						|
: init-cartesian ( cartesian -- cartesian )
 | 
						|
  init-slate
 | 
						|
  -10 >>x-min
 | 
						|
   10 >>x-max
 | 
						|
  -10 >>y-min
 | 
						|
   10 >>y-max
 | 
						|
   -1 >>z-min
 | 
						|
    1 >>z-max ;
 | 
						|
 | 
						|
: <cartesian> ( -- cartesian ) cartesian new init-cartesian ;
 | 
						|
 | 
						|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 | 
						|
 | 
						|
M: cartesian establish-coordinate-system ( cartesian -- cartesian )
 | 
						|
   dup
 | 
						|
   {
 | 
						|
     [ x-min>> ] [ x-max>> ]
 | 
						|
     [ y-min>> ] [ y-max>> ]
 | 
						|
     [ z-min>> ] [ z-max>> ]
 | 
						|
   }
 | 
						|
   cleave
 | 
						|
   glOrtho ;
 | 
						|
 | 
						|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 | 
						|
 | 
						|
: x-range ( cartesian range -- cartesian ) first2 [ >>x-min ] [ >>x-max ] bi* ;
 | 
						|
: y-range ( cartesian range -- cartesian ) first2 [ >>y-min ] [ >>y-max ] bi* ;
 | 
						|
: z-range ( cartesian range -- cartesian ) first2 [ >>z-min ] [ >>z-max ] bi* ;
 | 
						|
 | 
						|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 | 
						|
 |