<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>https://wiki.delphigl.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Commanace</id>
		<title>DGL Wiki - Benutzerbeiträge [de]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.delphigl.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Commanace"/>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php/Spezial:Beitr%C3%A4ge/Commanace"/>
		<updated>2026-05-30T22:19:42Z</updated>
		<subtitle>Benutzerbeiträge</subtitle>
		<generator>MediaWiki 1.27.4</generator>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Zylindrisches_Billboard&amp;diff=12551</id>
		<title>Zylindrisches Billboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Zylindrisches_Billboard&amp;diff=12551"/>
				<updated>2005-04-26T17:52:39Z</updated>
		
		<summary type="html">&lt;p&gt;Commanace: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Unvollständig}}&lt;br /&gt;
=Zylindrisches Billboard=&lt;br /&gt;
Wie schon der Name aussagt dient ein '''zylindrisches [[Billboard]]''' zur Darstellung eines Zylindrischen Körpers wie etwa einen Baumstamm. Neben solchen direkt zylindrischen Körpern, kann ein solches Billboard auch genutzt werden um Lichtstrahlen darzustellen.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:Beispiel Zylindrisches Billboard.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Anleitung ==&lt;br /&gt;
Ein Rechteck kann, wenn eine Breite bekannt ist, an 2 Punkten aufgehängt werden. Ausgehend von dieser Basis werden als erstes die zwei Punkte mit der Modelview Matrix multipliziert, um ihrere spätere Position zu ermitteln. &lt;br /&gt;
&lt;br /&gt;
Danach wird ein Vektor AB errechnet, der von Punkt A nach Punkt B zeigt.&lt;br /&gt;
&lt;br /&gt;
Das Kreuzprodukt vom diesem und den Vektor (0,0,1) ergeben dann zwei neue Vektoren (z.B Vektor AC und Vektor AD). &lt;br /&gt;
&lt;br /&gt;
Durch eine Längenänderung dieser Vektoren kann die Breite des Rechtecks bestimmt werden.&lt;br /&gt;
&lt;br /&gt;
Durch entsprechende Addition der Vektoren kann man nun das gewünschte Rechteck beschreiben:&lt;br /&gt;
 OC := OA + AC;&lt;br /&gt;
 OD := OA + AD;&lt;br /&gt;
 OE := OA + AB +AD;&lt;br /&gt;
 OF := OA + AB +AC;&lt;br /&gt;
&lt;br /&gt;
Dazu folgende Sikzze:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:Zylindrisches Billboard Skizze.png]]&lt;br /&gt;
&lt;br /&gt;
Da die Modelview Matrix schon berücksichtigt wurde setzt man diese nun auf die Identitäts Matrix und kann das Rechteck CDEF rendern.&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#000080&amp;quot;&amp;gt;&amp;lt;i&amp;gt;// Variable zum speichern der Modelview-Matrix&amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;b&amp;gt;var&amp;lt;/b&amp;gt;&lt;br /&gt;
   ModelViewMatrix:TMatrix4f;&lt;br /&gt;
 &amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#000080&amp;quot;&amp;gt;&amp;lt;i&amp;gt;// Viereck beschreibende Daten&amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;b&amp;gt;const&amp;lt;/b&amp;gt;&lt;br /&gt;
   LaengezuBreite=4.0; &amp;lt;font color=&amp;quot;#000080&amp;quot;&amp;gt;&amp;lt;i&amp;gt;// 4 mal so lang wie breit.&amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
   PunktA:TVektor4f=&amp;lt;b&amp;gt;(&amp;lt;/b&amp;gt;X:2;Y:1;Z:-2;W:1&amp;lt;b&amp;gt;)&amp;lt;/b&amp;gt;;&lt;br /&gt;
   PunktB:TVektor4f=&amp;lt;b&amp;gt;(&amp;lt;/b&amp;gt;X:-2;Y:-2;Z:-4;W:1&amp;lt;b&amp;gt;)&amp;lt;/b&amp;gt;; &amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;lt;b&amp;gt;procedure&amp;lt;/b&amp;gt; ZeichenRoutine;&lt;br /&gt;
 &amp;lt;b&amp;gt;var&amp;lt;/b&amp;gt;&lt;br /&gt;
   OA,OB:TVektor4f;&lt;br /&gt;
   AB:TVektor4f;&lt;br /&gt;
   AC,AD:TVektor4f;&lt;br /&gt;
   P1,P2,P3,P4: TVektor4f;&lt;br /&gt;
 &amp;lt;b&amp;gt;begin&amp;lt;/b&amp;gt;&lt;br /&gt;
   glClear&amp;lt;b&amp;gt;(&amp;lt;/b&amp;gt;GL_COLOR_BUFFER_BIT &amp;lt;b&amp;gt;or&amp;lt;/b&amp;gt; GL_DEPTH_BUFFER_BIT&amp;lt;b&amp;gt;)&amp;lt;/b&amp;gt;;&lt;br /&gt;
   glMatrixMode&amp;lt;b&amp;gt;(&amp;lt;/b&amp;gt;GL_MODELVIEW&amp;lt;b&amp;gt;)&amp;lt;/b&amp;gt;;&lt;br /&gt;
   glLoadIdentity;&lt;br /&gt;
   glTranslatef&amp;lt;b&amp;gt;(&amp;lt;/b&amp;gt;0,0,-6&amp;lt;b&amp;gt;)&amp;lt;/b&amp;gt;; &amp;lt;br /&amp;gt;&lt;br /&gt;
   &amp;lt;font color=&amp;quot;#000080&amp;quot;&amp;gt;&amp;lt;i&amp;gt;// Modelview Matrix in einer Variablen ablegen&amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
   glGetFloatv&amp;lt;b&amp;gt;(&amp;lt;/b&amp;gt;GL_MODELVIEW_MATRIX,@ModelViewMatrix&amp;lt;b&amp;gt;)&amp;lt;/b&amp;gt;; &amp;lt;br /&amp;gt;&lt;br /&gt;
   &amp;lt;font color=&amp;quot;#000080&amp;quot;&amp;gt;&amp;lt;i&amp;gt;// Position der Punkte nach Multiplikation mit der ModelViewMatrix;&amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
   OA := VektormalMatrix&amp;lt;b&amp;gt;(&amp;lt;/b&amp;gt;PunktA,ModelViewMatrix&amp;lt;b&amp;gt;)&amp;lt;/b&amp;gt;;&lt;br /&gt;
   OB := VektormalMatrix&amp;lt;b&amp;gt;(&amp;lt;/b&amp;gt;PunktB,ModelViewMatrix&amp;lt;b&amp;gt;)&amp;lt;/b&amp;gt;; &amp;lt;br /&amp;gt;&lt;br /&gt;
   &amp;lt;font color=&amp;quot;#000080&amp;quot;&amp;gt;&amp;lt;i&amp;gt;// Vektor von A nach B&amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
   AB := SubVektor&amp;lt;b&amp;gt;(&amp;lt;/b&amp;gt;OB,OA&amp;lt;b&amp;gt;)&amp;lt;/b&amp;gt;; &amp;lt;br /&amp;gt;&lt;br /&gt;
   &amp;lt;font color=&amp;quot;#000080&amp;quot;&amp;gt;&amp;lt;i&amp;gt;// Gekürzte Vektorprodukt Ergebnisse&amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
   AC.X := AB.Y /LaengezuBreite;&lt;br /&gt;
   AC.Y := -AB.X /LaengezuBreite;&lt;br /&gt;
   AC.Z := 0;&lt;br /&gt;
   AC.W := 0;&lt;br /&gt;
   AD.X := -AC.X;&lt;br /&gt;
   AD.Y := -AC.Y;&lt;br /&gt;
   AD.Z := 0;&lt;br /&gt;
   AD.W := 0; &amp;lt;br /&amp;gt;&lt;br /&gt;
   &amp;lt;font color=&amp;quot;#000080&amp;quot;&amp;gt;&amp;lt;i&amp;gt;//Punkte des Vierecks aus Vektoren zusammenbauen&amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
   P1 := AddVektor&amp;lt;b&amp;gt;(&amp;lt;/b&amp;gt;OA,AC&amp;lt;b&amp;gt;)&amp;lt;/b&amp;gt;;&lt;br /&gt;
   P2 := AddVektor&amp;lt;b&amp;gt;(&amp;lt;/b&amp;gt;OA,AD&amp;lt;b&amp;gt;)&amp;lt;/b&amp;gt;; &amp;lt;br /&amp;gt;&lt;br /&gt;
   P3 := AddVektor&amp;lt;b&amp;gt;(&amp;lt;/b&amp;gt;P2,AB&amp;lt;b&amp;gt;)&amp;lt;/b&amp;gt;;&lt;br /&gt;
   P4 := AddVektor&amp;lt;b&amp;gt;(&amp;lt;/b&amp;gt;P1,AB&amp;lt;b&amp;gt;)&amp;lt;/b&amp;gt;; &amp;lt;br /&amp;gt;&lt;br /&gt;
   &amp;lt;font color=&amp;quot;#000080&amp;quot;&amp;gt;&amp;lt;i&amp;gt;// Schon berücksichtigte Modelview-Matrix auf die Indentitäts-Matrix setzen&amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
   glLoadIdentity;&lt;br /&gt;
   &amp;lt;font color=&amp;quot;#000080&amp;quot;&amp;gt;&amp;lt;i&amp;gt;// Viereck ausgeben&amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
   glBegin&amp;lt;b&amp;gt;(&amp;lt;/b&amp;gt;GL_LINE_LOOP&amp;lt;b&amp;gt;)&amp;lt;/b&amp;gt;;&lt;br /&gt;
     glColor3f&amp;lt;b&amp;gt;(&amp;lt;/b&amp;gt;1,0,0&amp;lt;b&amp;gt;)&amp;lt;/b&amp;gt;; glVertex4fv&amp;lt;b&amp;gt;(&amp;lt;/b&amp;gt;@P1&amp;lt;b&amp;gt;)&amp;lt;/b&amp;gt;;&lt;br /&gt;
     glColor3f&amp;lt;b&amp;gt;(&amp;lt;/b&amp;gt;0,0,1&amp;lt;b&amp;gt;)&amp;lt;/b&amp;gt;; glVertex4fv&amp;lt;b&amp;gt;(&amp;lt;/b&amp;gt;@P2&amp;lt;b&amp;gt;)&amp;lt;/b&amp;gt;;&lt;br /&gt;
     glColor3f&amp;lt;b&amp;gt;(&amp;lt;/b&amp;gt;1,0,1&amp;lt;b&amp;gt;)&amp;lt;/b&amp;gt;; glVertex4fv&amp;lt;b&amp;gt;(&amp;lt;/b&amp;gt;@P3&amp;lt;b&amp;gt;)&amp;lt;/b&amp;gt;;&lt;br /&gt;
     glColor3f&amp;lt;b&amp;gt;(&amp;lt;/b&amp;gt;1,1,1&amp;lt;b&amp;gt;)&amp;lt;/b&amp;gt;; glVertex4fv&amp;lt;b&amp;gt;(&amp;lt;/b&amp;gt;@P4&amp;lt;b&amp;gt;)&amp;lt;/b&amp;gt;;&lt;br /&gt;
   glEnd;&lt;br /&gt;
 &amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt;;&lt;/div&gt;</summary>
		<author><name>Commanace</name></author>	</entry>

	</feed>