Class { #name : #ProjectionMatrix, #superclass : #Array2D, #instVars : [ 'buffer' ], #category : #'Diya-Math' } { #category : #'instance creation' } ProjectionMatrix class >> fromDisplay: display [ ^self subclassResponsibility ] { #category : #accessing } ProjectionMatrix >> buffer [ ^ buffer ] { #category : #initialization } ProjectionMatrix >> calculate [ self subclassResponsibility ] { #category : #initialization } ProjectionMatrix >> default [ ] { #category : #initialization } ProjectionMatrix >> handle [ ^buffer getHandle ] { #category : #initialization } ProjectionMatrix >> initialize [ super initialize. self rows:4 columns: 4 contents: ((Array new: 16) atAllPut: 0). 1 to: 4 do: [ :i| self at: i at:i put: 1.0 ]. buffer := FFIExternalArray externalNewType: #float size: self size. buffer autoRelease. self default. self update ] { #category : #initialization } ProjectionMatrix >> update [ |i| self calculate. i := 1. self asArray do:[:e| buffer at:i put:e. i := i+1 ]. ]