func Actualize(R, V, O, A *vect.Imp) { // right[0], right[1], right[2] = R.Coord3() front[0], front[1], front[2] = V.Coord3() top[0], top[1], top[2] = O.Coord3() eye[0], eye[1], eye[2] = A.Coord3() }
// Pre: n < MaxL, 0 <= h[i] <= 1 für i = 0, 1. // Wenn Licht n schon eingeschaltet war, ist nichts verändert; andernfalls ist es // an der Position v in Farbe f mit der Ambienz h[0] und der Diffusität h[1] eingeschaltet. func InitLight(n uint, v, h *vect.Imp, c col.Colour) { // // if lightInitialized[n] { return } var a [4]float64 a[0], a[1], a[2] = h.Coord3() // Arbeitsdrumrum, weil die Punkte bisher nur eine Farbe transportieren, hier die diffuse. // In L wird die ambiente Farbe geliefert. for i := 0; i < 3; i++ { aa[n][i] = C.GLfloat(a[i]) } aa[n][3] = C.GLfloat(1.0) lightColour[n] = c d0, d1, d2 := col.Float(c) dd[n][0], dd[n][1], dd[n][2] = C.GLfloat(d0), C.GLfloat(d1), C.GLfloat(d2) dd[n][3] = C.GLfloat(1.0) lightSource[n].Copy(v) ActualizeLight(n) lightInitialized[n] = true }
func vector2yyy(v *vect.Imp) { // for i := 0; i < 3; i++ { yyy[i] = C.GLdouble(v.Coord(spc.Direction(i))) } }