- procedure TGrafikForm.GenerateObjects;
- var Lauf : Integer;
- begin
- if High(Punkte)<>-1 then
- begin
- glDeleteLists(PListe, 1);
- PListe:=glGenLists(1);
- glNewList(PListe,gl_compile);
- glPointsize(10);
- glColor4f(0,1,1,1);
- glBegin(gl_points);
- for Lauf := 0 to High(Punkte) do
- begin
- glVertex3f(Punkte[Lauf].x1, Punkte[Lauf].x2, Punkte[Lauf].x3);
- end;
- glEnd;
- glEndList;
- end;
- if High(Geraden)<>-1 then
- begin
- glDeleteLists(GListe, 1);
- GListe:=glGenLists(1);
- glNewList(GListe, gl_compile);
- glLineWidth(3);
- glColor4f(1, 1, 0, 1);
- for Lauf := 0 to High(Geraden) do
- begin
- glBegin(gl_lines);
- glVertex3f(Geraden[Lauf].Ortsvektor.x1+100*Geraden[Lauf].Richtung1.x1,
- Geraden[Lauf].Ortsvektor.x2+100*Geraden[Lauf].Richtung1.x2,
- Geraden[Lauf].Ortsvektor.x3+100*Geraden[Lauf].Richtung1.x3);
- glVertex3f(Geraden[Lauf].Ortsvektor.x1-100*Geraden[Lauf].Richtung1.x1,
- Geraden[Lauf].Ortsvektor.x2-100*Geraden[Lauf].Richtung1.x2,
- Geraden[Lauf].Ortsvektor.x3-100*Geraden[Lauf].Richtung1.x3);
- glEnd;
- end;
- glEndList;
- end;
- if High(Ebenen)<>-1 then
- begin
- glDeleteLists(EListe, 1);
- EListe:=glGenLists(1);
- glNewList(EListe, gl_compile);
- glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
- glDisable(GL_DEPTH_TEST);
- glenable(gl_blend);
- glblendfunc(gl_src_alpha, gl_src_alpha);
- for Lauf := 0 to High(Ebenen) do
- begin
- if IsNullVektor(Ebenen[Lauf].Richtung1) then
- begin
- //hier fehlt noch was
- end else
- begin
- case Lauf of
- 0:glcolor4f(0.3,0.3,0.8, TAlpha);
- 1:glcolor4f(0.8,0.3,0.8, TAlpha);
- 2:glcolor4f(0.3,0.8,0.8, TAlpha);
- end;
- glBegin(gl_quads);
- glVertex3f(Ebenen[Lauf].Ortsvektor.x1
- +100*Ebenen[Lauf].Richtung1.x1+100*Ebenen[Lauf].Richtung2.x1,
- Ebenen[Lauf].Ortsvektor.x2+100*Ebenen[Lauf].Richtung1.x2
- +100*Ebenen[Lauf].Richtung2.x2,Ebenen[Lauf].Ortsvektor.x3
- +100*Ebenen[Lauf].Richtung1.x3+100*Ebenen[Lauf].Richtung2.x3);
- glVertex3f(Ebenen[Lauf].Ortsvektor.x1
- -100*Ebenen[Lauf].Richtung1.x1+100*Ebenen[Lauf].Richtung2.x1,
- Ebenen[Lauf].Ortsvektor.x2-100*Ebenen[Lauf].Richtung1.x2
- +100*Ebenen[Lauf].Richtung2.x2,Ebenen[Lauf].Ortsvektor.x3
- -100*Ebenen[Lauf].Richtung1.x3+100*Ebenen[Lauf].Richtung2.x3);
- glVertex3f(Ebenen[Lauf].Ortsvektor.x1
- -100*Ebenen[Lauf].Richtung1.x1-100*Ebenen[Lauf].Richtung2.x1,
- Ebenen[Lauf].Ortsvektor.x2-100*Ebenen[Lauf].Richtung1.x2
- -100*Ebenen[Lauf].Richtung2.x2,Ebenen[Lauf].Ortsvektor.x3
- -100*Ebenen[Lauf].Richtung1.x3-100*Ebenen[Lauf].Richtung2.x3);
- glVertex3f(Ebenen[Lauf].Ortsvektor.x1
- +100*Ebenen[Lauf].Richtung1.x1-100*Ebenen[Lauf].Richtung2.x1,
- Ebenen[Lauf].Ortsvektor.x2+100*Ebenen[Lauf].Richtung1.x2
- -100*Ebenen[Lauf].Richtung2.x2,Ebenen[Lauf].Ortsvektor.x3
- +100*Ebenen[Lauf].Richtung1.x3-100*Ebenen[Lauf].Richtung2.x3);
- glEnd;
- end;
- glPolygonMode (GL_FRONT_AND_BACK, GL_LINE);
- glEnable(GL_DEPTH_TEST);
- glEndList;
- end;
- end;
- glDeleteLists(Komplett, 1);
- Komplett:=glGenLists(1);
- glNewList(Komplett, gl_compile);
- glCallList(Achsen);
- glCallList(Cube);
- glCallList(PListe);
- glCallList(GListe);
- glCallList(EListe);
- glEndList;
- end;