Standard Utah teapot. Used primarily for testing.
ProtoObjectObjectTObjectTFrameTPrimitiveTTeapot
| gridSize | patches | scale | type |
| OpenGLConstants |
| instance | class |
|---|---|
| accessing initialize render | no messages
|
| gridSize |
|---|
| patches |
|---|
| scale |
|---|
| type |
|---|
| accessing |
|---|
| gridSize |
^ gridSize. |
| gridSize: gs |
gridSize _ gs. |
| scale |
^ scale. |
| scale: sc |
scale _ sc. self boundsChanged. |
| type |
^ type. |
| type: tp |
type _ tp. |
| initialize |
|---|
| initialize |
| glp v | super initialize. patches _ OrderedCollection new. v_ self vertexData. gridSize _ 10. scale _ 0.5. type _ GLFill. (self patchData) doWithIndex: [:pdata :index| glp _ TPatch new. glp patch: pdata vertex: v. patches add: glp. patches add: glp mirrorY. index <= 6 ifTrue:[ patches add: glp mirrorX. patches add: glp mirrorX mirrorY.]]. ^ self. |
| patchData |
| p | p _ OrderedCollection new. p " rim" add: #(102 103 104 105 4 5 6 7 8 9 10 11 12 13 14 15) asIntegerArray; " body " add: #(12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27) asIntegerArray; add: #(24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40) asIntegerArray; " lid " add: #(96 96 96 96 97 98 99 100 101 101 101 101 0 1 2 3) asIntegerArray; add: #(0 1 2 3 106 107 108 109 110 111 112 113 114 115 116 117) asIntegerArray; " bottom " add: #(118 118 118 118 124 122 119 121 123 126 125 120 40 39 38 37) asIntegerArray; " handle " add: #(41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56) asIntegerArray; add: #(53 54 55 56 57 58 59 60 61 62 63 64 28 65 66 67) asIntegerArray; " spout " add: #(68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83) asIntegerArray; add: #(80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95) asIntegerArray. ^p. |
| vertexData |
^#(0.2 0.0 2.7 0.2 -0.112 2.7 0.112 -0.2 2.7 0.0 -0.2 2.7 1.3375 0 2.53125 1.3375 -0.749 2.53125 0.749 -1.3375 2.53125 0 -1.3375 2.53125 1.4375 0 2.53125 1.4375 -0.805 2.53125 0.805 -1.4375 2.53125 0 -1.4375 2.53125 1.5 0 2.4 1.5 -0.84 2.4 0.84 -1.5 2.4 0 -1.5 2.4 1.75 0 1.875 1.75 -0.98 1.875 0.98 -1.75 1.875 0 -1.75 1.875 2 0 1.35 2 -1.12 1.35 1.12 -2 1.35 0 -2 1.35 2 0 0.9 2 -1.12 0.9 1.12 -2 0.9 0 -2 0.9 -2 0 0.9 2 0 0.45 2 -1.12 0.45 1.12 -2 0.45 0 -2 0.45 1.5 0 0.225 1.5 -0.84 0.225 0.84 -1.5 0.225 0 -1.5 0.225 1.5 0 0.15 1.5 -0.84 0.15 0.84 -1.5 0.15 0 -1.5 0.15 -1.6 0 2.025 -1.6 -0.3 2.025 -1.5 -0.3 2.25 -1.5 0 2.25 -2.3 0 2.025 -2.3 -0.3 2.025 -2.5 -0.3 2.25 -2.5 0 2.25 -2.7 0 2.025 -2.7 -0.3 2.025 -3 -0.3 2.25 -3 0 2.25 -2.7 0 1.8 -2.7 -0.3 1.8 -3 -0.3 1.8 -3 0 1.8 -2.7 0 1.575 -2.7 -0.3 1.575 -3 -0.3 1.35 -3 0 1.35 -2.5 0 1.125 -2.5 -0.3 1.125 -2.65 -0.3 0.9375 -2.65 0 0.9375 -2 -0.3 0.9 -1.9 -0.3 0.6 -1.9 0 0.6 1.7 0 1.425 1.7 -0.66 1.425 1.7 -0.66 0.6 1.7 0 0.6 2.6 0 1.425 2.6 -0.66 1.425 3.1 -0.66 0.825 3.1 0 0.825 2.3 0 2.1 2.3 -0.25 2.1 2.4 -0.25 2.025 2.4 0 2.025 2.7 0 2.4 2.7 -0.25 2.4 3.3 -0.25 2.4 3.3 0 2.4 2.8 0 2.475 2.8 -0.25 2.475 3.525 -0.25 2.49375 3.525 0 2.49375 2.9 0 2.475 2.9 -0.15 2.475 3.45 -0.15 2.5125 3.45 0 2.5125 2.8 0 2.4 2.8 -0.15 2.4 3.2 -0.15 2.4 3.2 0 2.4 0 0 3.15 0.8 0 3.15 0.8 -0.45 3.15 0.45 -0.8 3.15 0 -0.8 3.15 0 0 2.85 1.4 0 2.4 1.4 -0.784 2.4 0.784 -1.4 2.4 0 -1.4 2.4 0.4 0 2.55 0.4 -0.224 2.55 0.224 -0.4 2.55 0 -0.4 2.55 1.3 0 2.55 1.3 -0.728 2.55 0.728 -1.3 2.55 0 -1.3 2.55 1.3 0 2.4 1.3 -0.728 2.4 0.728 -1.3 2.4 0 -1.3 2.4 0 0 0 1.425 -0.798 0 1.5 0 0.075 1.425 0 0 0.798 -1.425 0 0 -1.5 0.075 0 -1.425 0 1.5 -0.84 0.075 0.84 -1.5 0.075) asFloatArray. |
| render |
|---|
| glTeapot: renderer gridSize: grid |
self glTeapot: renderer gridSize: grid scale: 0.5 type: GLFill. |
| glTeapot: renderer gridSize: grid scale: sc type: tp |
| tex | renderer glPushMatrix. renderer glRotatef: 270.0 with: 1.0 with: 0.0 with: 0.0. renderer glScalef: sc * 0.28 with: sc * 0.28 with: sc * 0.28. renderer glTranslatef: 0 with: 0 with: -1.5. tex _ #(0 0 1 0 0 1 1 1) asFloatArray. " construction settings. " renderer glPushAttrib: (GLEnableBit bitOr: GLEvalBit). renderer glEnable: GLAutoNormal. renderer glEnable: GLNormalize. renderer glEnable: GLMap2Vertex3. renderer glEnable: GLMap2TextureCoord2. patches do: [:p | renderer glMap2f: GLMap2TextureCoord2 with: 0 with: 1 with: 2 with: 2 with: 0 with: 1 with: 4 with: 2 with: tex. renderer glMap2f: GLMap2Vertex3 with: 0 with: 1 with: 3 with: 4 with: 0 with: 1 with: 12 with: 4 with: p. renderer glMapGrid2f: grid with: 0.0 with: 1.0 with: grid with: 0.0 with: 1.0. renderer glEvalMesh2: tp with: 0 with: grid with: 0 with: grid]. renderer glPopMatrix. renderer glPopAttrib. |
| initBounds |
| v v3 minCorner maxCorner center dimension radiusSquared testRad | v _ self vertexData. minCorner _ B3DVector3 x: Float infinity y: Float infinity z: Float infinity. maxCorner _ B3DVector3 x: Float infinity negated y: Float infinity negated z: Float infinity negated. dimension _ 1. v do: [:vertex | dimension = 1 ifTrue: [vertex < minCorner x ifTrue: [minCorner x: vertex]. vertex > maxCorner x ifTrue: [maxCorner x: vertex].]. dimension = 2 ifTrue: [vertex < minCorner y ifTrue: [minCorner y: vertex]. vertex > maxCorner y ifTrue: [maxCorner y: vertex].]. dimension = 3 ifTrue: [vertex < minCorner z ifTrue: [minCorner z: vertex]. vertex > maxCorner z ifTrue: [maxCorner z: vertex].]. dimension _ dimension+1. dimension = 4 ifTrue:[dimension _ 1].]. dimension = 1. v3 _B3DVector3 new. center _ (maxCorner + minCorner)/2.0. radiusSquared _ 0. v do: [:vertex | dimension = 1 ifTrue:[v3 x: vertex.]. dimension = 2 ifTrue:[v3 y: vertex.]. dimension = 3 ifTrue:[v3 z: vertex. testRad _ (v3-center)squaredLength. radiusSquared < testRad ifTrue:[radiusSquared_testRad].]. dimension _ dimension+1. dimension = 4 ifTrue:[dimension _ 1].]. boundSphere _ TBoundSphere localPosition: B3DVector3 new radius: scale * 0.6 * 0.28 * (radiusSquared sqrt). boundSphere frame: self. |
| pick: pointer |
^ pointer pickSphere: self boundSphere localPosition radiusSquared: self boundSphere radiusSquared. |
| renderPrimitive: ogl |
| tex | ogl glPushMatrix. ogl glRotatef: 270.0 with: 1.0 with: 0.0 with: 0.0. ogl glScalef: scale * 0.28 with: scale * 0.28 with: scale * 0.28. ogl glTranslatef: 0 with: 0 with: -1.5. tex _ #(0 0 1 0 0 1 1 1) asFloatArray. " construction settings. " ogl glPushAttrib: (GLEnableBit bitOr: GLEvalBit). ogl glEnable: GLAutoNormal. ogl glEnable: GLNormalize. ogl glEnable: GLMap2Vertex3. ogl glEnable: GLMap2TextureCoord2. patches do: [:p | ogl glMap2f: GLMap2TextureCoord2 with: 0 with: 1 with: 2 with: 2 with: 0 with: 1 with: 4 with: 2 with: tex. ogl glMap2f: GLMap2Vertex3 with: 1 with: 0 with: 3 with: 4 with: 0 with: 1 with: 12 with: 4 with: p. ogl glMapGrid2f: gridSize with: 0.0 with: 1.0 with: gridSize with: 0.0 with: 1.0. ogl glEvalMesh2: type with: 0 with: gridSize with: 0 with: gridSize]. ogl glPopMatrix. ogl glPopAttrib. |