<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Chainmail_%28Algorithmus%29</id>
	<title>Chainmail (Algorithmus) - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Chainmail_%28Algorithmus%29"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Chainmail_(Algorithmus)&amp;action=history"/>
	<updated>2026-05-28T11:06:32Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Chainmail_(Algorithmus)&amp;diff=1896458&amp;oldid=prev</id>
		<title>imported&gt;Aka: https, Links optimiert</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Chainmail_(Algorithmus)&amp;diff=1896458&amp;oldid=prev"/>
		<updated>2021-05-22T17:45:01Z</updated>

		<summary type="html">&lt;p&gt;https, Links optimiert&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Datei:Transfer of a point and its effects on other points in the chainmail algorithm.svg|miniatur|400px|Veranschaulichung des Algorithmus. Eine gleichmäßige Punktwolke wird verkettet dargestellt und einer der Punkte verschoben. Wie bei einer Kette werden die angrenzenden Glieder ab einer bestimmten Distanz mitgezogen.]]&lt;br /&gt;
[[Datei:Different states of the connections between points for the chainmail algorithm.svg|miniatur|300px|Die verschiedenen Zustände der Verbindung zwischen Punkten in einer Punktwolke bei dem Chainmail-Algorithmus. Links ist der Ausgangszustand (lockerer Zustand) zu sehen. Die Mitte zeigt die Verbindungen maximal gespannt. Rechts sind die Verbindungen maximal gepresst.]]&lt;br /&gt;
&lt;br /&gt;
Der &amp;#039;&amp;#039;&amp;#039;Chainmail&amp;#039;&amp;#039;&amp;#039;-[[Algorithmus]] (kurz: &amp;#039;&amp;#039;CM&amp;#039;&amp;#039;, auch &amp;#039;&amp;#039;3D Chainmail&amp;#039;&amp;#039;) ist ein Verfahren in der [[Computergrafik]], um die Form eines mehrdimensionalen Objekts zu verändern. Er wurde erstmals 1997 von Sarah Gibson veröffentlicht.&amp;lt;ref name=&amp;quot;gibson&amp;quot;&amp;gt;Sarah Gibson: &amp;#039;&amp;#039;3D ChainMail: a Fast Algorithm for Deforming Volumetric Objects&amp;#039;&amp;#039;. Mitsubishi Electric Research Lab Cambridge, 1997.&amp;lt;/ref&amp;gt; Er kann allerdings nur auf [[Homogenität|homogenen]] Körpern angewandt werden. Aus diesem Grund entwarf Markus Schill 2001 den &amp;#039;&amp;#039;&amp;#039;Enhanced Chainmail&amp;#039;&amp;#039;&amp;#039;-Algorithmus (kurz: &amp;#039;&amp;#039;ECM&amp;#039;&amp;#039;), welcher auch auf inhomogene Körper ausgeführt werden kann.&amp;lt;ref name=&amp;quot;schill&amp;quot;&amp;gt;Markus Schill: &amp;#039;&amp;#039;Biomechanical Soft Tissue Modeling – Techniques, Implementation and Applications&amp;#039;&amp;#039;. Mannheim, Universität, Fakultät für Mathematik und Informatik, 2001, {{DNB|964635690}} (PDF; 24,6 MB)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Chainmail-Algorithmus wurde für die Deformation von [[1D|ein-]], [[2D|zwei-]] und [[3D|dreidimensionalen]] Körpern entwickelt. Dabei wird das Verhalten einer Kette, bzw. einer mehrdimensionalen Kette ([[Kettenhemd]], daher der Name) zum Vorbild genommen.&lt;br /&gt;
&lt;br /&gt;
Er kann auf jede [[Punktwolke]], die eine gleichmäßige Struktur aufweist, angewandt werden. Somit werden die Quellobjekte in Form von Nachbarschaften von Elementen dargestellt. So hat ein Element einer 1D-Kette bis zu zwei Nachbarn, ein Element einer 2D-Kette bis zu vier Nachbarn und ein Element einer 3D-Kette hat bis zu sechs Nachbarn. Der Chainmail-Algorithmus reagiert auch bei großen Punktmengen sehr schnell, da er wenig Rechenaufwand benötigt. Aus diesem Grund ist er für ein zeitgleiches Rendering von geometrischen Deformationen eine gute Wahl.&amp;lt;ref name=&amp;quot;schill&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chainmail ==&lt;br /&gt;
&lt;br /&gt;
Der ursprüngliche Chainmail-Algorithmus wurde erstmals 1997 von Sarah Gibson eingesetzt.&amp;lt;ref name=&amp;quot;gibson&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;draeger&amp;quot;&amp;gt;Christopher Dräger. &amp;#039;&amp;#039;A ChainMail Algorithm for Direct Volume Deformation in Virtual Endoscopy Applications&amp;#039;&amp;#039;. Diplomarbeit, TU Wien, 2005. ([https://www.cg.tuwien.ac.at/research/publications/2005/draeger-2005-chain/draeger-2005-chain-PDF.pdf PDF])&amp;lt;/ref&amp;gt; Sie hat einen schnellen Algorithmus zur Deformation von dreidimensionalen, homogenen Körpern entwickelt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Allowed distances between two adjacent points in a point cloud for the chainmail algorithm.svg|miniatur|300px|Das Bild zeigt die erlaubte Mindest- und Maximal-Distanz eines Punktes zu seinem Nachbarn.]]&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel werden bei einem zweidimensionalen Körper jeweils ein horizontaler und ein vertikaler Minimal- und Maximalabstand (&amp;#039;&amp;#039;x&amp;lt;sub&amp;gt;min&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;x&amp;lt;sub&amp;gt;max&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; sowie &amp;#039;&amp;#039;y&amp;lt;sub&amp;gt;min&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;y&amp;lt;sub&amp;gt;max&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039;) zu den vier direkt benachbarten Elementen festgelegt, welche für alle „Kettenglieder“ gelten. Außerdem wird für jede der vier möglichen Richtungen (links, rechts, oben, unten) eine leere Liste angelegt. Wird nun ein Element verschoben, wird dessen Position gespeichert und die vier Nachbarn zur jeweiligen Liste hinzugefügt. Nun werden die Listen, wie im folgenden [[Pseudocode]], [[Iteration|iterativ]] abgearbeitet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
// Element x wurde verschoben&lt;br /&gt;
verschiebe(x);&lt;br /&gt;
// Alle 4 Nachbarn zur jeweiligen Liste hinzufügen&lt;br /&gt;
gibOberenNachbar(x).hinzufuegenZurListe(oben);&lt;br /&gt;
gibUnterenNachbar(x).hinzufuegenZurListe(unten);&lt;br /&gt;
gibRechtenNachbar(x).hinzufuegenZurListe(rechts);&lt;br /&gt;
gibLinkenNachbar(x).hinzufuegenZurListe(links);&lt;br /&gt;
// Solange es mindestens eine nicht-leere Liste gibt&lt;br /&gt;
while (!oben.istLeer() || !unten.istLeer() ||&lt;br /&gt;
       !rechts.istLeer() || !links.istLeer()) {&lt;br /&gt;
  liste = gibEineGefuellteListe(oben, unten, rechts, links);&lt;br /&gt;
  // Solange diese Liste nicht leer ist&lt;br /&gt;
  while (!liste.istLeer()) {&lt;br /&gt;
    Element e = liste.gibNaechstes();&lt;br /&gt;
    if (e.verletztGrenzen()) {&lt;br /&gt;
      if (liste != oben)&lt;br /&gt;
        gibUnterenNachbar(x).hinzufuegenZurListe(unten);&lt;br /&gt;
      if (liste != unten)&lt;br /&gt;
        gibOberenNachbar(x).hinzufuegenZurListe(oben);&lt;br /&gt;
      if (liste != rechts)&lt;br /&gt;
        gibLinkenNachbar(x).hinzufuegenZurListe(links);&lt;br /&gt;
      if (liste != links)&lt;br /&gt;
        gibRechtenNachbar(x).hinzufuegenZurListe(rechts);&lt;br /&gt;
      // Aktuelles Element verschieben&lt;br /&gt;
      verschiebe(e);&lt;br /&gt;
      // Lösche aktuelles Element aus aktueller Liste&lt;br /&gt;
      liste.loesche(e);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enhanced Chainmail ==&lt;br /&gt;
&lt;br /&gt;
Für die Darstellung von Körpern in der Biomechanik wird vorausgesetzt, dass auch mit inhomogenen Daten gearbeitet werden kann. Dies unterstützt die Weiterentwicklung des Chainmail-Algorithmus – der Enhanced Chainmail-Algorithmus. Er wurde im Jahre 2001 von M. Schill veröffentlicht.&amp;lt;ref name=&amp;quot;schill&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier wird nicht mehr für jede Richtung eine Liste angelegt, sondern nur noch eine Liste, in welcher alle zu verschiebenden Elemente eingetragen werden. Die Elemente werden absteigend nach Grad der Verschiebung sortiert. Sie erhalten den bereits korrigierten Verursacher als zusätzliche Informationen. Es wird immer das Element, das an der Spitze der Liste steht (also die Grenzen am stärksten verletzt) zu seinem Verursacher hin korrigiert. Nach jeder Korrektur muss die Liste aktualisiert werden.&lt;br /&gt;
&lt;br /&gt;
Das regelmäßige Aktualisieren der Liste macht den Algorithmus komplexer als seinen Vorgänger.&amp;lt;ref name=&amp;quot;schill&amp;quot; /&amp;gt; Somit sollte bei homogenen Objekten der ursprüngliche Chainmail-Algorithmus verwendet werden.&lt;br /&gt;
&lt;br /&gt;
== Elastische Entspannung ==&lt;br /&gt;
&lt;br /&gt;
Der Chainmail-Algorithmus deformiert einen Körper verhältnismäßig schnell. Er basiert nur auf geometrischen Beziehungen zwischen benachbarten Elementen. Dabei ist allerdings nicht gesagt, dass die Elemente gleichmäßig verschoben werden. Bei einer Abbildung der Elemente auf ein [[Masse-Feder-System (Computergrafik)|Masse-Feder-System]] kann man dies damit beschreiben, dass die potenzielle Energie ungleichmäßig über die verschobenen Elemente verteilt ist. Wird dieses Masse-Feder-System mit hohen [[Abklingkonstante]]n versehen, verteilt es selbstständig die potenzielle Energie unter den verschobenen Elementen. Dadurch wird die Deformation gleichmäßiger.&amp;lt;ref name=&amp;quot;schill&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Algorithmus (Computergrafik)]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Aka</name></author>
	</entry>
</feed>