41 lines
		
	
	
		
			912 B
		
	
	
	
		
			Factor
		
	
	
		
		
			
		
	
	
			41 lines
		
	
	
		
			912 B
		
	
	
	
		
			Factor
		
	
	
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								USING: kernel namespaces arrays sequences math.vectors
							 | 
						||
| 
								 | 
							
								       mortar slot-accessors geom.pos geom.dim ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								IN: geom.rect
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								USE: math
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								: v+y ( pos y -- pos ) 0 swap 2array v+ ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								: v-y ( pos y -- pos ) 0 swap 2array v- ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								: v+x ( pos x -- pos ) 0 2array v+ ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								: v-x ( pos x -- pos ) 0 2array v- ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								SYMBOL: <rect>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<rect>
							 | 
						||
| 
								 | 
							
								  <pos> class-slots <dim> class-slots append
							 | 
						||
| 
								 | 
							
								  <pos> class-methods <dim> class-methods append { H{ } } append
							 | 
						||
| 
								 | 
							
								  { H{ } }
							 | 
						||
| 
								 | 
							
								4array <rect> set-global
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								! { 0 0 } { 0 0 } <rect> new
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<rect> {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								"top-left" !( rect -- point ) [ $pos ]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								"top-right" !( rect -- point ) [ dup $pos swap <- width 1- v+x ]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								"bottom-left" !( rect -- point ) [ dup $pos swap <- height 1- v+y ]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								"bottom-right" !( rect -- point ) [ dup $pos swap $dim { 1 1 } v- v+ ]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								} add-methods
							 |