<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>https://wiki.delphigl.com/index.php?action=history&amp;feed=atom&amp;title=Kamera_%283%29</id>
		<title>Kamera (3) - Versionsgeschichte</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.delphigl.com/index.php?action=history&amp;feed=atom&amp;title=Kamera_%283%29"/>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Kamera_(3)&amp;action=history"/>
		<updated>2026-05-08T02:10:33Z</updated>
		<subtitle>Versionsgeschichte dieser Seite in DGL Wiki</subtitle>
		<generator>MediaWiki 1.27.4</generator>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Kamera_(3)&amp;diff=22886&amp;oldid=prev</id>
		<title>DGLBot: Der Ausdruck ''&lt;pascal&gt;(.*?)&lt;/pascal&gt;'' wurde ersetzt mit ''&lt;source lang=&quot;pascal&quot;&gt;$1&lt;/source&gt;''.</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Kamera_(3)&amp;diff=22886&amp;oldid=prev"/>
				<updated>2009-03-10T18:06:02Z</updated>
		
		<summary type="html">&lt;p&gt;Der Ausdruck &amp;#039;&amp;#039;&amp;lt;pascal&amp;gt;(.*?)&amp;lt;/pascal&amp;gt;&amp;#039;&amp;#039; wurde ersetzt mit &amp;#039;&amp;#039;&amp;lt;source lang=&amp;quot;pascal&amp;quot;&amp;gt;$1&amp;lt;/source&amp;gt;&amp;#039;&amp;#039;.&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='de'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Version vom 10. März 2009, 18:06 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l4&quot; &gt;Zeile 4:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 4:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Ich habe einfach alle Funktionen meiner Toolsammlung hierhin kopiert. Ich wollte jetzt nicht offline etwas weglöschen was vielleicht benötigt wird. Ihr findet also hier einen ganzen Wust von Funktionen, der zum Betrieb der Kamera nicht benötigt wird. Vielleicht könnt Ihr das eine oder andere aber brauchen...&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Ich habe einfach alle Funktionen meiner Toolsammlung hierhin kopiert. Ich wollte jetzt nicht offline etwas weglöschen was vielleicht benötigt wird. Ihr findet also hier einen ganzen Wust von Funktionen, der zum Betrieb der Kamera nicht benötigt wird. Vielleicht könnt Ihr das eine oder andere aber brauchen...&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pascal&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;source lang=&amp;quot;&lt;/ins&gt;pascal&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;quot;&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{******************************************************************}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{******************************************************************}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;(*&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;(*&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1643&quot; &gt;Zeile 1.643:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 1.643:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;end.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;end.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;pascal&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;source&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategorie:Anleitung]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategorie:Anleitung]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>DGLBot</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Kamera_(3)&amp;diff=21091&amp;oldid=prev</id>
		<title>Andyh am 5. Februar 2008 um 05:04 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Kamera_(3)&amp;diff=21091&amp;oldid=prev"/>
				<updated>2008-02-05T05:04:25Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='de'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Version vom 5. Februar 2008, 05:04 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot; &gt;Zeile 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pascal&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pascal&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{******************************************************************}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(*&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; Released as part of the camera example program&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; Visit us @ http://www.delphigl.com&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; Maintained by Florian Sievert (Phobeus)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; Phobeus@DelphiGL.com&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-------------------------------------------------------------------&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; License&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; -------&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; Copyright (C) 2007 Andree Heyroth&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; This license applies to everything on www.delphigl.com, except where&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; otherwise noted.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; This software is provided 'as-is', without any express or implied warranty.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; In no event will the authors be held liable for any damages arising from&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; the use of this software.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; Permission is granted to anyone to use this software for any purpose,&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; including commercial applications, and to alter it and redistribute it&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; freely, subject to the following restrictions:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; 1. The origin of this software must not be misrepresented; you must not&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160;  claim that you wrote the original software. If you use this software in a&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160;  product, an acknowledgment in the product documentation would be&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160;  appreciated but is not required.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; 2. Altered source versions must be plainly marked as such, and must not be&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160;  misrepresented as being the original software.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; 3. This notice may not be removed or altered from any source distribution.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; Description&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; -----------&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; Include file which contains common functions to perform OpenGL specific tasks&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; like rotating a point around a specific axis or invert matrices or calculate&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; a vectors normal or calculate a cross product or ...&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; Requirements&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; ------------&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; - SDL 1.2 (http://www.libsdl.org/download-1.2.php or your distribution)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; - Borland Delphi version 5.0 and above&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; History&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; -------&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; -&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; Contact&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; -------&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; I created this source code in my spare time. If you find a bug or just&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; wanna say hello, feel free to write to the contributor:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160; Andree Heyroth (AndyH)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160; email : heyroth@syncro-concept.de&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160; Visit: http://www.delphigl.com&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*******************************************************************************)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;unit Util;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;unit Util;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l171&quot; &gt;Zeile 171:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 226:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; C_PI=3.1415926535;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; C_PI=3.1415926535;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; C_PI_DIV_180=C_PI/180;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; C_PI_DIV_180=C_PI/180;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; HORIZONTAL: byte = 1;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; VERTIKAL: byte = 2;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; ZENTRAL: byte = 3;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;implementation&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;implementation&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Andyh</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Kamera_(3)&amp;diff=19716&amp;oldid=prev</id>
		<title>Andyh am 7. Oktober 2006 um 05:18 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Kamera_(3)&amp;diff=19716&amp;oldid=prev"/>
				<updated>2006-10-07T05:18:50Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://wiki.delphigl.com/index.php?title=Kamera_(3)&amp;amp;diff=19716&amp;amp;oldid=16057&quot;&gt;Änderungen zeigen&lt;/a&gt;</summary>
		<author><name>Andyh</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Kamera_(3)&amp;diff=16057&amp;oldid=prev</id>
		<title>Andyh am 8. Januar 2006 um 07:05 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Kamera_(3)&amp;diff=16057&amp;oldid=prev"/>
				<updated>2006-01-08T07:05:44Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://wiki.delphigl.com/index.php?title=Kamera_(3)&amp;amp;diff=16057&amp;amp;oldid=14253&quot;&gt;Änderungen zeigen&lt;/a&gt;</summary>
		<author><name>Andyh</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Kamera_(3)&amp;diff=14253&amp;oldid=prev</id>
		<title>Andyh am 13. November 2005 um 11:58 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Kamera_(3)&amp;diff=14253&amp;oldid=prev"/>
				<updated>2005-11-13T11:58:34Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://wiki.delphigl.com/index.php?title=Kamera_(3)&amp;amp;diff=14253&amp;amp;oldid=13293&quot;&gt;Änderungen zeigen&lt;/a&gt;</summary>
		<author><name>Andyh</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Kamera_(3)&amp;diff=13293&amp;oldid=prev</id>
		<title>Flash am 15. Oktober 2005 um 19:20 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Kamera_(3)&amp;diff=13293&amp;oldid=prev"/>
				<updated>2005-10-15T19:20:48Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='de'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Version vom 15. Oktober 2005, 19:20 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Zeile 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Ich habe einfach alle &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;unktionen &lt;/del&gt;meiner Toolsammlung hierhin kopiert. Ich wollte jetzt nicht offline etwas weglöschen was vielleicht benötigt wird. Ihr findet also hier einen ganzen Wust von Funktionen, der zum Betrieb der Kamera nicht benötigt wird. Vielleicht könnt Ihr das eine oder andere aber brauchen...&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Eine Beschreibung findet ihr unter [[Kamera (1)]].&amp;lt;br&amp;gt; &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Den Kameracode findet ihr unter [[Kamera (2)]].&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Ich habe einfach alle &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Funktionen &lt;/ins&gt;meiner Toolsammlung hierhin kopiert. Ich wollte jetzt nicht offline etwas weglöschen was vielleicht benötigt wird. Ihr findet also hier einen ganzen Wust von Funktionen, der zum Betrieb der Kamera nicht benötigt wird. Vielleicht könnt Ihr das eine oder andere aber brauchen...&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pascal&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pascal&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Flash</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Kamera_(3)&amp;diff=10900&amp;oldid=prev</id>
		<title>Flo: Der Kategorie Anleitung zugeordnet</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Kamera_(3)&amp;diff=10900&amp;oldid=prev"/>
				<updated>2005-10-15T15:44:12Z</updated>
		
		<summary type="html">&lt;p&gt;Der Kategorie Anleitung zugeordnet&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='de'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Version vom 15. Oktober 2005, 15:44 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l894&quot; &gt;Zeile 894:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 894:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;end.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;end.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pascal&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pascal&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Kategorie:Anleitung]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Flo</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Kamera_(3)&amp;diff=10895&amp;oldid=prev</id>
		<title></title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Kamera_(3)&amp;diff=10895&amp;oldid=prev"/>
				<updated>2005-10-15T13:54:59Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='de'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Version vom 15. Oktober 2005, 13:54 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Zeile 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Ich habe einfach alle unktionen meiner Toolsammlung hierhin kopiert. Ich wollte jetzt nicht offline etwas weglöschen was vielleicht benötigt wird. Ihr findet also hier einen ganzen Wust von Funktionen, der zum Betrieb der Kamera nicht benötigt wird. Vielleicht könnt Ihr das eine oder andere aber brauchen...&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Ich habe einfach alle unktionen meiner Toolsammlung hierhin kopiert. Ich wollte jetzt nicht offline etwas weglöschen was vielleicht benötigt wird. Ihr findet also hier einen ganzen Wust von Funktionen, der zum Betrieb der Kamera nicht benötigt wird. Vielleicht könnt Ihr das eine oder andere aber brauchen...&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;pascal&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;unit OpenGLUtil;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;unit OpenGLUtil;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l893&quot; &gt;Zeile 893:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 893:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;end.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;end.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/pascal&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Flo</name></author>	</entry>

	<entry>
		<id>https://wiki.delphigl.com/index.php?title=Kamera_(3)&amp;diff=10891&amp;oldid=prev</id>
		<title>Andyh am 15. Oktober 2005 um 13:51 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki.delphigl.com/index.php?title=Kamera_(3)&amp;diff=10891&amp;oldid=prev"/>
				<updated>2005-10-15T13:51:43Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Ich habe einfach alle unktionen meiner Toolsammlung hierhin kopiert. Ich wollte jetzt nicht offline etwas weglöschen was vielleicht benötigt wird. Ihr findet also hier einen ganzen Wust von Funktionen, der zum Betrieb der Kamera nicht benötigt wird. Vielleicht könnt Ihr das eine oder andere aber brauchen...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
unit OpenGLUtil;&lt;br /&gt;
&lt;br /&gt;
interface&lt;br /&gt;
&lt;br /&gt;
uses DglOpenGL, Math, Windows, Graphics, SysUtils, Dialogs;&lt;br /&gt;
&lt;br /&gt;
type&lt;br /&gt;
  TProjection=(Frustum, Orthographic, Perspective);&lt;br /&gt;
&lt;br /&gt;
  TGLPlace=packed record&lt;br /&gt;
    X,Y,Z: glFloat;&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  TScale=packed record&lt;br /&gt;
    X,Y,Z: glFloat;&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  TGLPosition=packed record&lt;br /&gt;
    X,Y,Z,W: glFloat;&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  TPosition = packed record&lt;br /&gt;
    X,Y,Z,W: GLdouble;&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  TGLVector = packed record&lt;br /&gt;
    X,Y,Z: GLfloat;&lt;br /&gt;
  end;&lt;br /&gt;
  TGLVectorArray = array of TGLvector;&lt;br /&gt;
  TGLfloatArray = array of TGLfloat;&lt;br /&gt;
&lt;br /&gt;
  TGKVector = packed record&lt;br /&gt;
    X,Y,Z: GLfloat;&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  TAngle = packed record&lt;br /&gt;
    X,Y,Z: GLdouble;&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  TGLColor=record&lt;br /&gt;
    red,green,blue,alpha: GLclampf;&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  TRotation = packed record&lt;br /&gt;
    angle, x, y, z: GLfloat;&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  TTextureInfo = packed record&lt;br /&gt;
    BitmapName: string;&lt;br /&gt;
    TextureNum: GLUint;&lt;br /&gt;
  end;&lt;br /&gt;
  TTextureList = array of TTextureInfo;&lt;br /&gt;
&lt;br /&gt;
  TMatrix = array [0..3,0..3] of TGLFloat;&lt;br /&gt;
  TArrMatrix = array [0..15] of TGLFloat;&lt;br /&gt;
  TFrustum = array [0..5,0..3] of TGLFloat;&lt;br /&gt;
  TArrVector = array [0..3] of TGLFloat;&lt;br /&gt;
&lt;br /&gt;
  function Multiply (Color: TGLcolor; mult: TGLdouble): TGLcolor;&lt;br /&gt;
  procedure MatrixMultiply(M1, M2:TArrMatrix; var M3: TArrMatrix);&lt;br /&gt;
  function MakeVector(X,Y,Z:TGLFloat):TArrVector;overload;&lt;br /&gt;
  function MakeVector(X,Y,Z,W:TGLFloat):TArrVector;overload;&lt;br /&gt;
  procedure Normalize(aVector:TArrVector;var RVec:TArrVector);overload;&lt;br /&gt;
  procedure Normalize(aVector:TGLVector;var RVec:TGLVector);overload;&lt;br /&gt;
  function GetIdentity:TMatrix;&lt;br /&gt;
  function GetArrIdentity:TArrMatrix;&lt;br /&gt;
  function MatrixTranspose(const M:TMatrix):TMatrix;register;&lt;br /&gt;
  function VectorRotateX(v:TArrVector;a:TGLFloat):TArrVector;overload;&lt;br /&gt;
  function VectorRotateY(v:TArrVector;a:TGLFloat):TArrVector;overload;&lt;br /&gt;
  function VectorRotateZ(v:TArrVector;a:TGLFloat):TArrVector;overload;&lt;br /&gt;
  function VectorRotateX(v:TGLVector;a:TGLFloat):TGLVector;overload;&lt;br /&gt;
  function VectorRotateY(v:TGLVector;a:TGLFloat):TGLVector;overload;&lt;br /&gt;
  function VectorRotateZ(v:TGLVector;a:TGLFloat):TGLVector;overload;&lt;br /&gt;
&lt;br /&gt;
  function GL2GKVector (V: TGLVector): TGKVector;&lt;br /&gt;
  function GK2GLVector (V: TGKVector): TGLVector;&lt;br /&gt;
  function GL2WinColor (GLcol: TGLcolor): TColor;&lt;br /&gt;
  function Win2GLColor (WinCol: Tcolor): TGLcolor;&lt;br /&gt;
  function CalcNormale (V1, V2, V3: TGLVector): TGLVector;&lt;br /&gt;
  function CrossProduct(V1, V2: TGLVector): TGLVector;&lt;br /&gt;
  function DotProduct (V1, V2: TGLVector): GLdouble;&lt;br /&gt;
  function LoadTexture(Filename: String; var Texture: GLuint): Boolean;&lt;br /&gt;
  function Magnitude(V1 : TGLVector) : GLfloat;&lt;br /&gt;
  function MultiplyVektor (V1, V2: TGLVector): TGLVector;&lt;br /&gt;
  function ScalarProduct (V1, V2: TGLVector): GLdouble;&lt;br /&gt;
  function SubtractVector (Vec1, Vec2: TGLVector): TGLVector;overload;&lt;br /&gt;
  function SubtractVector (Vec: TGLVector; X, Y, Z: TGLdouble): TGLVector;overload;&lt;br /&gt;
  function AddVector (Vec1, Vec2: TGLVector): TGLVector;overload;&lt;br /&gt;
  function AddVector (Vec: TGLVector; X, Y, Z: TGLdouble): TGLVector;overload;&lt;br /&gt;
  procedure CopyVector (FromVektor: TGLVector; var ToVektor: TGLVector);&lt;br /&gt;
  procedure InitVector (var V1: TGLVector; x, y, z: TGLdouble);overload;&lt;br /&gt;
  procedure InitVector (var V1: TGKVector; x, y, z: TGLdouble);overload;&lt;br /&gt;
  procedure InitVector (var V1: TArrVector; x, y, z: TGLdouble);overload;&lt;br /&gt;
  procedure InitScale (var S1: TScale; x, y, z: TGLdouble);&lt;br /&gt;
  procedure LoadBitmap(Filename: String;&lt;br /&gt;
                       out Width: Cardinal;&lt;br /&gt;
                       out Height: Cardinal;&lt;br /&gt;
                       out pData: Pointer);&lt;br /&gt;
  procedure GetRotation (V1, V2: TGLVector;&lt;br /&gt;
                         var Rotation: TRotation;&lt;br /&gt;
                         var normale: TGLVector);&lt;br /&gt;
  function MakeTextureFromBitmap (Bitmap: string; var BitmapList: TTextureList): GLenum;&lt;br /&gt;
  procedure EnableTexture (Texture: GLenum; TextureTiled: boolean);&lt;br /&gt;
  procedure DisableTexture;&lt;br /&gt;
  function TextToGLVector (VTxt: string): TGLVector;&lt;br /&gt;
  function TextToGKVector (VTxt: string): TGKVector;&lt;br /&gt;
  function GKVectorToText (V1: TGKVector): string;&lt;br /&gt;
  function GLVectorToText (V1: TGLVector): string;&lt;br /&gt;
  function MyCone (Start, Ende: TGLVector;&lt;br /&gt;
                   RadiusStart, RadiusEnde: TGLfloat;&lt;br /&gt;
                   Slices: Integer): boolean;&lt;br /&gt;
  function InvertMatrix (src: TArrMatrix; var inverse: TArrMatrix): boolean;&lt;br /&gt;
&lt;br /&gt;
const&lt;br /&gt;
  C_X = 0;&lt;br /&gt;
  C_Y = 1;&lt;br /&gt;
  C_Z = 2;&lt;br /&gt;
  C_W = 3;&lt;br /&gt;
  C_EPS:TGLFloat=0.01;&lt;br /&gt;
  C_DEGTORAD:TGLFloat=3.1412/180;&lt;br /&gt;
  C_RADTODEG:TGLFloat=180/3.1412;&lt;br /&gt;
  C_LAMBDA_INCREMENT:TGLFloat=0.01;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
implementation&lt;br /&gt;
&lt;br /&gt;
function MyPower (Base: extended; Exp: integer): extended;&lt;br /&gt;
// ist nicht ausprogrammiert, funktioniert nur für eine &lt;br /&gt;
// einfache zweierpotenz&lt;br /&gt;
begin&lt;br /&gt;
  result := Base * Base;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure CopyVector (FromVektor: TGLVector; var ToVektor: TGLVector);&lt;br /&gt;
begin&lt;br /&gt;
  ToVektor.X := FromVektor.X;&lt;br /&gt;
  ToVektor.Y := FromVektor.Y;&lt;br /&gt;
  ToVektor.Z := FromVektor.Z;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function SubtractVector (Vec1, Vec2: TGLVector): TGLVector;&lt;br /&gt;
// subtrahiert Vec2 von vec1 und gibt das ergebnis in vec3 zurück&lt;br /&gt;
var&lt;br /&gt;
  Vec3: TGLVector;&lt;br /&gt;
begin&lt;br /&gt;
  Vec3 .X := Vec1.X - Vec2.X;&lt;br /&gt;
  Vec3 .Y := Vec1.Y - Vec2.Y;&lt;br /&gt;
  Vec3 .Z := Vec1.Z - Vec2.Z;&lt;br /&gt;
  result := Vec3;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function SubtractVector (Vec: TGLVector; X, Y, Z: TGLdouble): TGLVector;&lt;br /&gt;
// subtrahiert X, Y, Z von vec.x, vec.y, vec.z  und gibt das&lt;br /&gt;
// ergebnis zurück&lt;br /&gt;
begin&lt;br /&gt;
  Vec .X := Vec.X - X;&lt;br /&gt;
  Vec .Y := Vec.Y - Y;&lt;br /&gt;
  Vec .Z := Vec.Z - Z;&lt;br /&gt;
  result := Vec;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function AddVector (Vec1, Vec2: TGLVector): TGLVector;&lt;br /&gt;
// addiert Vec2 auf vec1 und gibt das ergebnis in vec3 zurück&lt;br /&gt;
var&lt;br /&gt;
  Vec3: TGLVector;&lt;br /&gt;
begin&lt;br /&gt;
  Vec3 .X := Vec1.X + Vec2.X;&lt;br /&gt;
  Vec3 .Y := Vec1.Y + Vec2.Y;&lt;br /&gt;
  Vec3 .Z := Vec1.Z + Vec2.Z;&lt;br /&gt;
  result := Vec3;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function AddVector (Vec: TGLVector; X, Y, Z: TGLdouble): TGLVector;&lt;br /&gt;
// addiert X, Y, Z auf vec.x, vec.y, vec.z  und gibt das&lt;br /&gt;
// ergebnis zurück&lt;br /&gt;
begin&lt;br /&gt;
  Vec .X := Vec.X + X;&lt;br /&gt;
  Vec .Y := Vec.Y + Y;&lt;br /&gt;
  Vec .Z := Vec.Z + Z;&lt;br /&gt;
  result := Vec;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function Magnitude(V1 : TGLVector) : GLfloat;&lt;br /&gt;
var&lt;br /&gt;
  Ergebnis: GLdouble;&lt;br /&gt;
begin&lt;br /&gt;
// gibt die länge des vektors zurück&lt;br /&gt;
  Ergebnis := MyPower(V1.X,2)+MyPower(V1.Y,2)+MyPower(V1.Z,2);&lt;br /&gt;
  try&lt;br /&gt;
    result := sqrt(Ergebnis);&lt;br /&gt;
  except&lt;br /&gt;
    result := 0;&lt;br /&gt;
  end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function DotProduct (V1, V2: TGLVector): GLdouble;&lt;br /&gt;
var&lt;br /&gt;
  len1, len2: GLdouble;&lt;br /&gt;
  Ergebnis: GLdouble;&lt;br /&gt;
begin&lt;br /&gt;
  len1 := Magnitude (V1);&lt;br /&gt;
  len2 := Magnitude (V2);&lt;br /&gt;
  Ergebnis := ScalarProduct (V1, V2);&lt;br /&gt;
  Ergebnis := arccos (Ergebnis / (len1 * len2));&lt;br /&gt;
  result := radtodeg (Ergebnis) * 2.0;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function CrossProduct(V1, V2: TGLVector): TGLVector;&lt;br /&gt;
var&lt;br /&gt;
  CrossVec: TGLVector;&lt;br /&gt;
begin&lt;br /&gt;
  CrossVec.X := ((V1.Y*V2.Z) - (V1.Z*V2.Y));&lt;br /&gt;
  CrossVec.Y := ((V1.Z*V2.X) - (V1.X*V2.Z));&lt;br /&gt;
CrossVec.Z := ((V1.X*V2.Y) - (V1.Y*V2.X));&lt;br /&gt;
  result := CrossVec;&lt;br /&gt;
 end;&lt;br /&gt;
&lt;br /&gt;
function CalcNormale (V1, V2, V3: TGLVector): TGLVector;&lt;br /&gt;
var&lt;br /&gt;
  Kreuz: TGLvector;&lt;br /&gt;
  V1V2, V1V3: TGLvector;&lt;br /&gt;
begin&lt;br /&gt;
  // gibt die normale von 3 vektoren zurück (die senkrechte auf die&lt;br /&gt;
  // durch die drei vektoren gebildete ebene)&lt;br /&gt;
  V1V2 := SubtractVector (V2, V1);&lt;br /&gt;
  V1V3 := SubtractVector (V3, V1);&lt;br /&gt;
&lt;br /&gt;
  Kreuz := CrossProduct (V1V2, V1V3);&lt;br /&gt;
&lt;br /&gt;
  Normalize (Kreuz, result);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure InitVector (var V1: TGLVector; x, y, z: TGLdouble);&lt;br /&gt;
begin&lt;br /&gt;
  V1.x := x;&lt;br /&gt;
  V1.y := y;&lt;br /&gt;
  V1.z := z;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure InitVector (var V1: TGKVector; x, y, z: TGLdouble);&lt;br /&gt;
begin&lt;br /&gt;
  V1.x := x;&lt;br /&gt;
  V1.y := y;&lt;br /&gt;
  V1.z := z;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure InitVector (var V1: TArrVector; x, y, z: TGLdouble);&lt;br /&gt;
begin&lt;br /&gt;
  V1[C_X] := x;&lt;br /&gt;
  V1[C_Y] := y;&lt;br /&gt;
  V1[C_Z] := z;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure InitScale (var S1: TScale; x, y, z: TGLdouble);&lt;br /&gt;
begin&lt;br /&gt;
  S1.x := x;&lt;br /&gt;
  S1.y := y;&lt;br /&gt;
  S1.z := z;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function MultiplyVektor (V1, V2: TGLVector): TGLVector;&lt;br /&gt;
var&lt;br /&gt;
  multVec: TGLVector;&lt;br /&gt;
begin&lt;br /&gt;
// zwei vektoren miteinander multiplizieren&lt;br /&gt;
  multVec.X := V1.X * V2.X;&lt;br /&gt;
  multVec.Y := V1.Y * V2.Y;&lt;br /&gt;
  multVec.Z := V1.Z * V2.Z;&lt;br /&gt;
  result := multvec;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function ScalarProduct (V1, V2: TGLVector): GLdouble;&lt;br /&gt;
begin&lt;br /&gt;
// die summe der potenzen der einzelnen achsen von zwei vektoren errechnen&lt;br /&gt;
  result := (V1.X*V2.X +&lt;br /&gt;
             V1.Y*V2.Y +&lt;br /&gt;
             V1.Z*V2.Z);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function LoadTexture(Filename: String; var Texture: GLuint): Boolean;&lt;br /&gt;
var&lt;br /&gt;
  pData: Pointer;&lt;br /&gt;
  Width: Cardinal;&lt;br /&gt;
  Height: Cardinal;&lt;br /&gt;
begin&lt;br /&gt;
  pData :=nil;&lt;br /&gt;
  LoadBitmap(Filename, Width, Height, pData);&lt;br /&gt;
&lt;br /&gt;
  if (Assigned(pData)) then&lt;br /&gt;
    Result := True&lt;br /&gt;
  else&lt;br /&gt;
  begin&lt;br /&gt;
    Result := False;&lt;br /&gt;
    MessageBox(0, PChar('Unable to load ' + filename), 'Loading Textures', MB_OK);&lt;br /&gt;
    Halt(1);&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  glGenTextures(1, @Texture);&lt;br /&gt;
  glBindTexture(GL_TEXTURE_2D, Texture);&lt;br /&gt;
  glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);  {Texture blends with object background}&lt;br /&gt;
&lt;br /&gt;
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); { only first two can be used }&lt;br /&gt;
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); { all of the above can be used }&lt;br /&gt;
&lt;br /&gt;
  gluBuild2DMipmaps(GL_TEXTURE_2D, 3, Width, Height, GL_RGB, GL_UNSIGNED_BYTE, pData);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure LoadBitmap(Filename: String;&lt;br /&gt;
                     out Width: Cardinal;&lt;br /&gt;
                     out Height: Cardinal;&lt;br /&gt;
                     out pData: Pointer);&lt;br /&gt;
var&lt;br /&gt;
  FileHeader: BITMAPFILEHEADER;&lt;br /&gt;
  InfoHeader: BITMAPINFOHEADER;&lt;br /&gt;
  Palette: array of RGBQUAD;&lt;br /&gt;
  BitmapFile: THandle;&lt;br /&gt;
  BitmapLength: Cardinal;&lt;br /&gt;
  PaletteLength: Cardinal;&lt;br /&gt;
  ReadBytes: Cardinal;&lt;br /&gt;
  Front: ^Byte;&lt;br /&gt;
  Back: ^Byte;&lt;br /&gt;
  Temp: Byte;&lt;br /&gt;
  I : Cardinal;&lt;br /&gt;
begin&lt;br /&gt;
  BitmapFile := CreateFile(PChar(Filename), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);&lt;br /&gt;
  if (BitmapFile = INVALID_HANDLE_VALUE) then begin&lt;br /&gt;
    MessageBox(0, PChar('Error opening &amp;quot;' + Filename), PChar('BMP Unit'), MB_OK);&lt;br /&gt;
    Exit;&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  // Get header information&lt;br /&gt;
  ReadFile(BitmapFile, FileHeader, SizeOf(FileHeader), ReadBytes, nil);&lt;br /&gt;
  ReadFile(BitmapFile, InfoHeader, SizeOf(InfoHeader), ReadBytes, nil);&lt;br /&gt;
&lt;br /&gt;
  // Get palette&lt;br /&gt;
  PaletteLength := InfoHeader.biClrUsed;&lt;br /&gt;
  SetLength(Palette, PaletteLength);&lt;br /&gt;
  ReadFile(BitmapFile, Palette, PaletteLength, ReadBytes, nil);&lt;br /&gt;
  if (ReadBytes &amp;lt;&amp;gt; PaletteLength) then begin&lt;br /&gt;
    MessageBox(0, PChar('Error reading palette'), PChar('BMP Unit'), MB_OK);&lt;br /&gt;
    Exit;&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  Width := InfoHeader.biWidth;&lt;br /&gt;
  Height := InfoHeader.biHeight;&lt;br /&gt;
  BitmapLength := InfoHeader.biSizeImage;&lt;br /&gt;
  if BitmapLength = 0 then&lt;br /&gt;
    BitmapLength := Width * Height * InfoHeader.biBitCount Div 8;&lt;br /&gt;
&lt;br /&gt;
  // Get the actual pixel data&lt;br /&gt;
  GetMem(pData, BitmapLength);&lt;br /&gt;
  ReadFile(BitmapFile, pData^, BitmapLength, ReadBytes, nil);&lt;br /&gt;
  if (ReadBytes &amp;lt;&amp;gt; BitmapLength) then begin&lt;br /&gt;
    MessageBox(0, PChar('Error reading bitmap data'), PChar('BMP Unit'), MB_OK);&lt;br /&gt;
    Exit;&lt;br /&gt;
  end;&lt;br /&gt;
  CloseHandle(BitmapFile);&lt;br /&gt;
&lt;br /&gt;
  // Bitmaps are stored BGR and not RGB, so swap the R and B bytes.&lt;br /&gt;
  for I :=0 to Width * Height - 1 do&lt;br /&gt;
  begin&lt;br /&gt;
    Front := Pointer(Cardinal(pData) + I*3);&lt;br /&gt;
    Back := Pointer(Cardinal(pData) + I*3 + 2);&lt;br /&gt;
    Temp := Front^;&lt;br /&gt;
    Front^ := Back^;&lt;br /&gt;
    Back^ := Temp;&lt;br /&gt;
  end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function GK2GLVector (V: TGKVector): TGLVector;&lt;br /&gt;
// ändert Gauss-Krüger Koordinaten in OpenGL Koordinaten um&lt;br /&gt;
begin&lt;br /&gt;
  result.X := V.X;&lt;br /&gt;
  result.Y := V.Z;&lt;br /&gt;
  result.Z := V.Y;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function GL2GKVector (V: TGLVector): TGKVector;&lt;br /&gt;
// ändert OpenGL Koordinaten in Gauss-Krüger Koordinaten um&lt;br /&gt;
begin&lt;br /&gt;
  result.X := V.X;&lt;br /&gt;
  result.Y := V.Z;&lt;br /&gt;
  result.Z := V.Y;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function Win2GLColor (WinCol: TColor): TGLcolor;&lt;br /&gt;
begin&lt;br /&gt;
  result.Red := GetRValue (WinCol);&lt;br /&gt;
  result.Green := GetGValue (WinCol);&lt;br /&gt;
  result.Blue := GetBValue (WinCol);&lt;br /&gt;
  result.Alpha := 1.0;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function GL2WinColor (GLcol: TGLcolor): TColor;&lt;br /&gt;
begin&lt;br /&gt;
  result := Rgb (StrToInt (FloatToStr (int (GLcol.Red))),&lt;br /&gt;
                 StrToInt (FloatToStr (int (GLcol.Green))),&lt;br /&gt;
                 StrToInt (FloatToStr (int (GLcol.Blue))));&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure GetRotation (V1, V2: TGLVector;&lt;br /&gt;
                       var Rotation: TRotation;&lt;br /&gt;
                       var normale: TGLVector);&lt;br /&gt;
var&lt;br /&gt;
  tmpCyl, tmpZiel, nullVec: TGLVector;&lt;br /&gt;
  ResultLen: TGLVector;&lt;br /&gt;
  VectorLength: GLfloat;&lt;br /&gt;
begin&lt;br /&gt;
  // temporäre vektoren initialisieren&lt;br /&gt;
  InitVector (nullVec, 0,0,0);&lt;br /&gt;
  InitVector (tmpCyl, 0,0,0);&lt;br /&gt;
&lt;br /&gt;
  // länge des zu drehenden objekts ermitteln&lt;br /&gt;
  ResultLen := SubtractVector (V2, V1);&lt;br /&gt;
  VectorLength := Magnitude (ResultLen);&lt;br /&gt;
&lt;br /&gt;
  // vektoren zur bildung der dreiecksfläche bilden.&lt;br /&gt;
  // die schenkel schneiden sich im nullpunkt&lt;br /&gt;
  // der Cylinder läuft immer entlang der Z-Achse&lt;br /&gt;
  tmpCyl.Z := VectorLength;&lt;br /&gt;
  tmpZiel := SubtractVector (V2, V1);&lt;br /&gt;
  tmpZiel.Z := tmpZiel.Z + VectorLength;&lt;br /&gt;
&lt;br /&gt;
  // senkrechte zu den beiden vektoren bilden&lt;br /&gt;
  // (um diese achse soll nachher gedreht werden)&lt;br /&gt;
  // drehachse für späteren gebrauch speichern&lt;br /&gt;
  normale := CalcNormale (tmpCyl, tmpZiel, nullVec);&lt;br /&gt;
&lt;br /&gt;
  // um &amp;quot;Angle&amp;quot; Grad soll nachher gedreht werden&lt;br /&gt;
  Rotation.Angle := DotProduct(tmpCyl, tmpZiel);&lt;br /&gt;
  Rotation.X     := normale.X;&lt;br /&gt;
  Rotation.Y     := normale.Y;&lt;br /&gt;
  Rotation.Z     := normale.Z;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function MakeTextureFromBitmap (Bitmap: string; var BitmapList: TTextureList): GLenum;&lt;br /&gt;
// die funktion lädt die in Bitmap übergebene Grafik und gibt die Textturnummer&lt;br /&gt;
// zurück. ist das bitmap schon im array BitmapList enthalten, wird die bereits&lt;br /&gt;
// vergeben nummer zurückgegeben.&lt;br /&gt;
var&lt;br /&gt;
  i, Laenge: integer;&lt;br /&gt;
begin&lt;br /&gt;
  result := 0;&lt;br /&gt;
  if length (trim (Bitmap)) = 0 then&lt;br /&gt;
    exit;&lt;br /&gt;
  Bitmap := trim (uppercase (Bitmap));&lt;br /&gt;
  // suchen, ob die textur schon geladen wurde&lt;br /&gt;
  Laenge := length (BitmapList);&lt;br /&gt;
  if Laenge &amp;gt; 0 then&lt;br /&gt;
    for i := 0 to Laenge-1 do&lt;br /&gt;
    begin&lt;br /&gt;
      if (BitmapList[i].BitmapName = Bitmap) and&lt;br /&gt;
         (BitmapList[i].TextureNum &amp;gt; 0) then&lt;br /&gt;
        result := BitmapList[i].TextureNum;&lt;br /&gt;
    end;&lt;br /&gt;
&lt;br /&gt;
  if (result = 0) then&lt;br /&gt;
  begin&lt;br /&gt;
    setlength (BitmapList, Laenge+1);&lt;br /&gt;
    BitmapList[Laenge].BitmapName := Bitmap;&lt;br /&gt;
    BitmapList[Laenge].TextureNum := 0;&lt;br /&gt;
    if LoadTexture (Bitmap, BitmapList[Laenge].TextureNum) then&lt;br /&gt;
      result := BitmapList[Laenge].TextureNum;&lt;br /&gt;
  end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure EnableTexture (Texture: GLenum; TextureTiled: boolean);&lt;br /&gt;
begin&lt;br /&gt;
  glEnable(GL_TEXTURE_2D);&lt;br /&gt;
  glBindTexture(GL_TEXTURE_2D, Texture);&lt;br /&gt;
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);&lt;br /&gt;
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);&lt;br /&gt;
  if TextureTiled then&lt;br /&gt;
  begin&lt;br /&gt;
    glTexparameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);&lt;br /&gt;
    glTexparameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);&lt;br /&gt;
  end&lt;br /&gt;
  else&lt;br /&gt;
  begin&lt;br /&gt;
    glTexparameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);&lt;br /&gt;
    glTexparameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);&lt;br /&gt;
  end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure DisableTexture;&lt;br /&gt;
begin&lt;br /&gt;
  glDisable(GL_TEXTURE_2D);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function TextToGLVector (VTxt: string): TGLVector;&lt;br /&gt;
const&lt;br /&gt;
  subdelim: char = '/';&lt;br /&gt;
var&lt;br /&gt;
  posi: integer;&lt;br /&gt;
  V1: TGLVector;&lt;br /&gt;
begin&lt;br /&gt;
  InitVector (V1,0,0,0);&lt;br /&gt;
  posi := pos (subdelim, VTxt);&lt;br /&gt;
  if posi &amp;gt; 0 then&lt;br /&gt;
  begin&lt;br /&gt;
    V1.X := StrToFloat (copy (VTxt, 1, posi-1));&lt;br /&gt;
    VTxt := copy (VTxt, posi+1, length (VTxt));&lt;br /&gt;
    posi := pos (subdelim, VTxt);&lt;br /&gt;
  end;&lt;br /&gt;
  if posi &amp;gt; 0 then&lt;br /&gt;
  begin&lt;br /&gt;
    V1.Y := StrToFloat (copy (VTxt, 1, posi-1));&lt;br /&gt;
    VTxt := copy (VTxt, posi+1, length (VTxt));&lt;br /&gt;
  end;&lt;br /&gt;
  if length (VTxt) &amp;gt; 0 then V1.Z := StrToFloat (VTxt);&lt;br /&gt;
&lt;br /&gt;
  result := V1;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function TextToGKVector (VTxt: string): TGKVector;&lt;br /&gt;
const&lt;br /&gt;
  subdelim: char = '/';&lt;br /&gt;
var&lt;br /&gt;
  posi: integer;&lt;br /&gt;
  V1: TGKVector;&lt;br /&gt;
begin&lt;br /&gt;
  InitVector (V1,0,0,0);&lt;br /&gt;
  posi := pos (subdelim, VTxt);&lt;br /&gt;
  if posi &amp;gt; 0 then&lt;br /&gt;
  begin&lt;br /&gt;
    V1.X := StrToFloat (copy (VTxt, 1, posi-1));&lt;br /&gt;
    VTxt := copy (VTxt, posi+1, length (VTxt));&lt;br /&gt;
    posi := pos (subdelim, VTxt);&lt;br /&gt;
  end;&lt;br /&gt;
  if posi &amp;gt; 0 then&lt;br /&gt;
  begin&lt;br /&gt;
    V1.Y := StrToFloat (copy (VTxt, 1, posi-1));&lt;br /&gt;
    VTxt := copy (VTxt, posi+1, length (VTxt));&lt;br /&gt;
  end;&lt;br /&gt;
  if length (VTxt) &amp;gt; 0 then V1.Z := StrToFloat (VTxt);&lt;br /&gt;
&lt;br /&gt;
  result := V1;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function GKVectorToText (V1: TGKVector): string;&lt;br /&gt;
const&lt;br /&gt;
  subdelim: char = '/';&lt;br /&gt;
var&lt;br /&gt;
  VTxt: string;&lt;br /&gt;
begin&lt;br /&gt;
  VTxt := FloatToStr (V1.X) + subdelim;&lt;br /&gt;
  VTxt := VTxt + FloatToStr (V1.Y) + subdelim;&lt;br /&gt;
  VTxt := VTxt + FloatToStr (V1.Z);&lt;br /&gt;
  result := VTxt;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function GLVectorToText (V1: TGLVector): string;&lt;br /&gt;
const&lt;br /&gt;
  subdelim: char = '/';&lt;br /&gt;
var&lt;br /&gt;
  VTxt: string;&lt;br /&gt;
begin&lt;br /&gt;
  VTxt := FloatToStr (V1.X) + subdelim;&lt;br /&gt;
  VTxt := VTxt + FloatToStr (V1.Y) + subdelim;&lt;br /&gt;
  VTxt := VTxt + FloatToStr (V1.Z);&lt;br /&gt;
  result := VTxt;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function MyCone (Start, Ende: TGLVector;&lt;br /&gt;
                 RadiusStart, RadiusEnde: TGLfloat;&lt;br /&gt;
                 Slices: Integer): boolean;&lt;br /&gt;
var&lt;br /&gt;
  Slice: Integer;&lt;br /&gt;
  Laenge, xdelta, zdelta: TGLfloat;&lt;br /&gt;
  V1, V2, V3, V4: TGLvector;&lt;br /&gt;
  A, B: Single;&lt;br /&gt;
  tmpVec: TGLvector;&lt;br /&gt;
begin&lt;br /&gt;
  result := true;&lt;br /&gt;
  // laenge des kegels berechnen&lt;br /&gt;
  // hierbei wird davon ausgegangen, dass der kegel senkrecht steht&lt;br /&gt;
  // Laenge := Ende.y - Start.y;&lt;br /&gt;
  tmpVec := SubtractVector (Start, Ende);&lt;br /&gt;
  Laenge := Magnitude (tmpVec);&lt;br /&gt;
  // radiusdifferenz berechnen&lt;br /&gt;
  xdelta := Start.x - Ende.x;&lt;br /&gt;
  zdelta := Start.z - Ende.z;&lt;br /&gt;
  xdelta := -xdelta;&lt;br /&gt;
  //zdelta := zdelta;&lt;br /&gt;
  glBegin (GL_TRIANGLE_STRIP);&lt;br /&gt;
  // der kegel wird entlang der z-achse gezeichnet&lt;br /&gt;
  V1.z := 0;&lt;br /&gt;
  V2.z := 0;&lt;br /&gt;
  V3.z := Laenge;&lt;br /&gt;
  V4.z := Laenge;&lt;br /&gt;
  for Slice := 1 to Slices do begin&lt;br /&gt;
    A := 2 * PI * Slice / Slices;&lt;br /&gt;
    B := 2 * PI * (Slice+1) / Slices;&lt;br /&gt;
    V1.x := sin(A)*RadiusStart;&lt;br /&gt;
    V1.y := cos(A)*RadiusStart;&lt;br /&gt;
    V2.x := sin(B)*RadiusStart;&lt;br /&gt;
    V2.y := cos(B)*RadiusStart;&lt;br /&gt;
    // umsetzung von y nach z-achse&lt;br /&gt;
    V3.x := (sin(B)*RadiusEnde)+xdelta;&lt;br /&gt;
    V3.y := (cos(B)*RadiusEnde)+zdelta;&lt;br /&gt;
    V4.x := (sin(A)*RadiusEnde)+xdelta;&lt;br /&gt;
    V4.y := (cos(A)*RadiusEnde)+zdelta;&lt;br /&gt;
    //Normale := CalcNormale (V1, V3, V2);&lt;br /&gt;
    //glNormal3fv(@Normale);&lt;br /&gt;
    if Slice = 1 then&lt;br /&gt;
    begin&lt;br /&gt;
      glTexCoord2f(1,0); glVertex3fv(@V1);&lt;br /&gt;
      glTexCoord2f(1,1); glVertex3fv(@V4);&lt;br /&gt;
      glTexCoord2f(1-Slice/Slices,0); glVertex3fv(@V2);&lt;br /&gt;
      glTexCoord2f(1-Slice/Slices,1); glVertex3fv(@V3);&lt;br /&gt;
    end&lt;br /&gt;
    else&lt;br /&gt;
    begin&lt;br /&gt;
      glTexCoord2f(1-Slice/Slices,0); glVertex3fv(@V2);&lt;br /&gt;
      glTexCoord2f(1-Slice/Slices,1); glVertex3fv(@V3);&lt;br /&gt;
    end;&lt;br /&gt;
    // aktuellen und nächsten punkt des kreises (oben und unten)&lt;br /&gt;
    // nehmen und ein rechteck zeichnen. alle rechtecke zusammen sollten&lt;br /&gt;
    // einen geschlossenen kegel ergeben.&lt;br /&gt;
    //glBegin(GL_QUADS);&lt;br /&gt;
    //  glNormal3fv(@Normale);&lt;br /&gt;
    //  glTexCoord2f(0,0); glVertex3fv(@V2);&lt;br /&gt;
    //  glTexCoord2f(1,0); glVertex3fv(@V1);&lt;br /&gt;
    //  glTexCoord2f(1,1); glVertex3fv(@V4);&lt;br /&gt;
    //  glTexCoord2f(0,1); glVertex3fv(@V3);&lt;br /&gt;
    //glEnd;&lt;br /&gt;
  end;&lt;br /&gt;
  glEnd;  // (GL_TRIANGLE_STRIP)&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
{-----------------------------------------------------------------------------}&lt;br /&gt;
{----------------------------- für TRUVCamera --------------------------------}&lt;br /&gt;
{-----------------------------------------------------------------------------}&lt;br /&gt;
&lt;br /&gt;
procedure MatrixMultiply(M1, M2: TArrMatrix; var M3: TArrMatrix);&lt;br /&gt;
// multiplies two 4x4 matrices&lt;br /&gt;
begin	&lt;br /&gt;
  glPushMatrix();&lt;br /&gt;
  glLoadMatrixf(@M1);&lt;br /&gt;
  glMultMatrixf(@M2);&lt;br /&gt;
  glGetFloatv(GL_MODELVIEW_MATRIX,@M3);&lt;br /&gt;
  glPopMatrix();&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function MakeVector(X,Y,Z:TGLFloat):TArrVector;&lt;br /&gt;
begin&lt;br /&gt;
  result[0]:=x;&lt;br /&gt;
  result[1]:=y;&lt;br /&gt;
  result[2]:=z;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function MakeVector(X,Y,Z,W:TGLFloat):TArrVector;&lt;br /&gt;
begin&lt;br /&gt;
  result[0]:=x;&lt;br /&gt;
  result[1]:=y;&lt;br /&gt;
  result[2]:=z;&lt;br /&gt;
  result[3]:=w;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure Normalize(aVector:TArrVector;var RVec:TArrVector);&lt;br /&gt;
var&lt;br /&gt;
   d:double;&lt;br /&gt;
begin&lt;br /&gt;
  InitVector (RVec,1,1,1);&lt;br /&gt;
  d:=Sqrt(Sqr(aVector[C_X])+Sqr(aVector[C_Y])+Sqr(aVector[C_Z]));&lt;br /&gt;
  if d=0 then&lt;br /&gt;
  begin&lt;br /&gt;
    //raise exception.Create('Zero length vector(Normalize 1)');&lt;br /&gt;
    exit;&lt;br /&gt;
  end;&lt;br /&gt;
  RVec[C_X]:=aVector[C_X]/d;&lt;br /&gt;
  RVec[C_Y]:=aVector[C_Y]/d;&lt;br /&gt;
  RVec[C_Z]:=aVector[C_Z]/d;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure Normalize(aVector:TGLVector; var RVec:TGLVector);&lt;br /&gt;
var&lt;br /&gt;
   d:double;&lt;br /&gt;
begin&lt;br /&gt;
  InitVector (RVec,1,1,1);&lt;br /&gt;
  d:=Sqrt(Sqr(aVector.X)+Sqr(aVector.Y)+Sqr(aVector.Z));&lt;br /&gt;
  if d=0 then&lt;br /&gt;
  begin&lt;br /&gt;
    //raise exception.Create('Zero length vector(Normalize 2)');&lt;br /&gt;
    exit;&lt;br /&gt;
  end;&lt;br /&gt;
  RVec.X:=aVector.X/d;&lt;br /&gt;
  RVec.Y:=aVector.Y/d;&lt;br /&gt;
  RVec.Z:=aVector.Z/d;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function GetIdentity:TMatrix;&lt;br /&gt;
begin&lt;br /&gt;
  result[0,0]:=1.0;result[0,1]:=0.0;result[0,2]:=0.0;result[0,3]:=0.0;&lt;br /&gt;
  result[1,0]:=0.0;result[1,1]:=1.0;result[1,2]:=0.0;result[1,3]:=0.0;&lt;br /&gt;
  result[2,0]:=0.0;result[2,1]:=0.0;result[2,2]:=1.0;result[2,3]:=0.0;&lt;br /&gt;
  result[3,0]:=0.0;result[3,1]:=0.0;result[3,2]:=0.0;result[3,3]:=1.0;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function GetArrIdentity:TArrMatrix;&lt;br /&gt;
begin&lt;br /&gt;
  result[0]:=1.0;result[1]:=0.0;result[2]:=0.0;result[3]:=0.0;&lt;br /&gt;
  result[4]:=0.0;result[5]:=1.0;result[6]:=0.0;result[7]:=0.0;&lt;br /&gt;
  result[8]:=0.0;result[9]:=0.0;result[10]:=1.0;result[11]:=0.0;&lt;br /&gt;
  result[12]:=0.0;result[13]:=0.0;result[14]:=0.0;result[15]:=1.0;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function MatrixTranspose(const M:TMatrix):TMatrix;register;&lt;br /&gt;
var&lt;br /&gt;
   i,j:integer;&lt;br /&gt;
begin&lt;br /&gt;
     for i:=0 to 3 do&lt;br /&gt;
         for j:=0 to 3 do&lt;br /&gt;
             result[i,j]:=M[j,i];&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function VectorRotateX(v:TArrVector;a:TGLFloat):TArrVector;&lt;br /&gt;
var&lt;br /&gt;
   temp: TArrVector;&lt;br /&gt;
   sine,cosine:TGLFloat;&lt;br /&gt;
begin&lt;br /&gt;
     a:=a*C_DEGTORAD;&lt;br /&gt;
     sine:=Sin(a);&lt;br /&gt;
     cosine:=Cos(a);&lt;br /&gt;
&lt;br /&gt;
     temp[C_X] := v[C_x];&lt;br /&gt;
     temp[C_Y] := (v[C_Y] * cosine) + (v[C_Z] * -sine);&lt;br /&gt;
     temp[C_Z] := (v[C_Y] * sine) + (v[C_Z] * cosine);&lt;br /&gt;
     result := temp;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function VectorRotateY(v: TArrVector;a:TGLFloat):TArrVector;&lt;br /&gt;
var&lt;br /&gt;
   temp: TArrVector;&lt;br /&gt;
   sine,cosine:TGLFloat;&lt;br /&gt;
begin&lt;br /&gt;
     a:=a*C_DEGTORAD;&lt;br /&gt;
     sine:=Sin(a);&lt;br /&gt;
     cosine:=Cos(a);&lt;br /&gt;
&lt;br /&gt;
     temp[C_x] := (v[C_x] * cosine) + (v[C_z] * sine);&lt;br /&gt;
     temp[C_y] := v[C_y];&lt;br /&gt;
     temp[C_z] := (v[C_x] * -sine) + (v[C_z] * cosine);&lt;br /&gt;
     result := temp;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function VectorRotateZ(v: TArrVector; a: TGLFloat):TArrVector;&lt;br /&gt;
var&lt;br /&gt;
  temp: TArrVector;&lt;br /&gt;
   sine,cosine:TGLFloat;&lt;br /&gt;
begin&lt;br /&gt;
     a:=a*C_DEGTORAD;&lt;br /&gt;
     sine:=Sin(a);&lt;br /&gt;
     cosine:=Cos(a);&lt;br /&gt;
     temp[C_x] := (v[C_x] * cosine) + (v[C_y] * -sine);&lt;br /&gt;
     temp[C_y] := (v[C_x] * sin(a)) + (v[C_y] * cosine);&lt;br /&gt;
     temp[C_z] := v[C_z];&lt;br /&gt;
     result := temp;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function VectorRotateX(v:TGLVector;a:TGLFloat):TGLVector;&lt;br /&gt;
var&lt;br /&gt;
   temp: TGLVector;&lt;br /&gt;
   sine,cosine:TGLFloat;&lt;br /&gt;
begin&lt;br /&gt;
     a:=a*C_DEGTORAD;&lt;br /&gt;
     sine:=Sin(a);&lt;br /&gt;
     cosine:=Cos(a);&lt;br /&gt;
&lt;br /&gt;
     temp.X := v.x;&lt;br /&gt;
     temp.Y := (v.Y * cosine) + (v.Z * -sine);&lt;br /&gt;
     temp.Z := (v.Y * sine) + (v.Z * cosine);&lt;br /&gt;
     result := temp;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function VectorRotateY(v: TGLVector;a:TGLFloat):TGLVector;&lt;br /&gt;
var&lt;br /&gt;
   temp: TGLVector;&lt;br /&gt;
   sine,cosine:TGLFloat;&lt;br /&gt;
begin&lt;br /&gt;
     a:=a*C_DEGTORAD;&lt;br /&gt;
     sine:=Sin(a);&lt;br /&gt;
     cosine:=Cos(a);&lt;br /&gt;
&lt;br /&gt;
     temp.x := (v.x * cosine) + (v.z * sine);&lt;br /&gt;
     temp.y := v.y;&lt;br /&gt;
     temp.z := (v.X * -sine) + (v.z * cosine);&lt;br /&gt;
     result := temp;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function VectorRotateZ(v: TGLVector; a: TGLFloat):TGLVector;&lt;br /&gt;
var&lt;br /&gt;
  temp: TGLVector;&lt;br /&gt;
   sine,cosine:TGLFloat;&lt;br /&gt;
begin&lt;br /&gt;
     a:=a*C_DEGTORAD;&lt;br /&gt;
     sine:=Sin(a);&lt;br /&gt;
     cosine:=Cos(a);&lt;br /&gt;
     temp.x := (v.x * cosine) + (v.y * -sine);&lt;br /&gt;
     temp.y := (v.x * sin(a)) + (v.y * cosine);&lt;br /&gt;
     temp.z := v.z;&lt;br /&gt;
     result := temp;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
{-----------------------------------------------------------------------------}&lt;br /&gt;
{-------------------------------- allgemein ----------------------------------}&lt;br /&gt;
{-----------------------------------------------------------------------------}&lt;br /&gt;
&lt;br /&gt;
function InvertMatrix (src: TArrMatrix; var inverse: TArrMatrix): boolean;&lt;br /&gt;
var&lt;br /&gt;
  t: TGLdouble;&lt;br /&gt;
  i, j, k, swap: integer;&lt;br /&gt;
  tmp: TMatrix;&lt;br /&gt;
begin&lt;br /&gt;
  result := false;&lt;br /&gt;
  inverse := GetArrIdentity;&lt;br /&gt;
&lt;br /&gt;
  for i := 0 to 3 do&lt;br /&gt;
  begin&lt;br /&gt;
    for j := 0 to 3 do&lt;br /&gt;
    begin&lt;br /&gt;
      tmp[i][j] := src[i*4+j];&lt;br /&gt;
    end;&lt;br /&gt;
  end;&lt;br /&gt;
&lt;br /&gt;
  for i := 0 to 3 do&lt;br /&gt;
  begin&lt;br /&gt;
    // look for largest element in column.&lt;br /&gt;
    swap := i;&lt;br /&gt;
    for j := i+1 to 3 do&lt;br /&gt;
    begin&lt;br /&gt;
      if abs(tmp[j][i]) &amp;gt; abs(tmp[i][i]) then&lt;br /&gt;
      begin&lt;br /&gt;
        swap := j;&lt;br /&gt;
      end;&lt;br /&gt;
    end;&lt;br /&gt;
&lt;br /&gt;
    if not (swap = i) then&lt;br /&gt;
    begin&lt;br /&gt;
      // swap rows.&lt;br /&gt;
      for k := 0 to 3 do&lt;br /&gt;
      begin&lt;br /&gt;
        t := tmp[i][k];&lt;br /&gt;
        tmp[i][k] := tmp[swap][k];&lt;br /&gt;
        tmp[swap][k] := t;&lt;br /&gt;
&lt;br /&gt;
        t := inverse[i*4+k];&lt;br /&gt;
        inverse[i*4+k] := inverse[swap*4+k];&lt;br /&gt;
        inverse[swap*4+k] := t;&lt;br /&gt;
      end;&lt;br /&gt;
    end;&lt;br /&gt;
&lt;br /&gt;
    if tmp[i][i] = 0 then&lt;br /&gt;
    begin&lt;br /&gt;
    { no non-zero pivot.  the matrix is singular, which&lt;br /&gt;
      shouldn't happen.  This means the user gave us a bad&lt;br /&gt;
      matrix. }&lt;br /&gt;
      exit;&lt;br /&gt;
    end;&lt;br /&gt;
&lt;br /&gt;
    t := tmp[i][i];&lt;br /&gt;
    for k := 0 to 3 do&lt;br /&gt;
    begin&lt;br /&gt;
      tmp[i][k] := tmp[i][k]/t;&lt;br /&gt;
      inverse[i*4+k] := inverse[i*4+k]/t;&lt;br /&gt;
    end;&lt;br /&gt;
&lt;br /&gt;
    for j := 0 to 3 do&lt;br /&gt;
    begin&lt;br /&gt;
      if not (j = i) then&lt;br /&gt;
      begin&lt;br /&gt;
        t := tmp[j][i];&lt;br /&gt;
        for k := 0 to 3 do&lt;br /&gt;
        begin&lt;br /&gt;
          tmp[j][k] := tmp[j][k]-tmp[i][k]*t;&lt;br /&gt;
          inverse[j*4+k] := inverse[j*4+k]-inverse[i*4+k]*t;&lt;br /&gt;
        end;&lt;br /&gt;
      end;&lt;br /&gt;
    end;&lt;br /&gt;
  end;&lt;br /&gt;
  result := true;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function Multiply (Color: TGLcolor; mult: TGLdouble): TGLcolor;&lt;br /&gt;
begin&lt;br /&gt;
  Color.red := Color.red * mult;&lt;br /&gt;
  Color.green := Color.green * mult;&lt;br /&gt;
  Color.blue := Color.blue * mult;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
end.&lt;/div&gt;</summary>
		<author><name>Andyh</name></author>	</entry>

	</feed>