DE69636693T2 - Verfahren zur Interferenz-Überwachung - Google Patents

Verfahren zur Interferenz-Überwachung Download PDF

Info

Publication number
DE69636693T2
DE69636693T2 DE69636693T DE69636693T DE69636693T2 DE 69636693 T2 DE69636693 T2 DE 69636693T2 DE 69636693 T DE69636693 T DE 69636693T DE 69636693 T DE69636693 T DE 69636693T DE 69636693 T2 DE69636693 T2 DE 69636693T2
Authority
DE
Germany
Prior art keywords
interference
convex
spheres
nearby
polygons
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69636693T
Other languages
English (en)
Other versions
DE69636693D1 (de
Inventor
Yuichi Kawasaki-shi Sato
Mitsunori Kawasaki-shi Hirata
Tsugito Kawasaki-shi Maruyama
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Application granted granted Critical
Publication of DE69636693D1 publication Critical patent/DE69636693D1/de
Publication of DE69636693T2 publication Critical patent/DE69636693T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Numerical Control (AREA)
  • Processing Or Creating Images (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Length Measuring Devices With Unspecified Measuring Means (AREA)
  • Length Measuring Devices By Optical Means (AREA)
  • Testing Of Devices, Machine Parts, Or Other Structures Thereof (AREA)

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich auf ein Interferenzprüfverfahren für nicht-konvexe Polyeder und insbesondere auf ein Interferenzprüfverfahren zum Beurteilen, ob die CG-Modelle von in einem Computer konstruierten Objekten voneinander beabstandet oder miteinander in Kontakt sind, durch den Computer und Berechnen der Punkte einer engsten Annäherung, des Kontaktpunktes und der Distanz zwischen den Punkten einer engsten Annäherung in Echtzeit. Die vorliegende Erfindung ist anwendbar auf verschiedene Gebiete, für die Computergraphik verwendet wird, wie z.B. CAD-Systeme zum Entwerfen eines Mechanismus, Pfaderzeugung für Manipulatoren und mobile Roboter wie z.B. selbstfahrende Fahrzeuge, Erzeugung von Animationen für eine Multimediaverwendung und Spielesoftware.
  • Wenn mehrere CG-Modelle (ein CG-Modell ist ein Satz von Polygonen zum Bestimmen der Gestalt eines Objekts) in einem Graphikcomputer konstruiert werden, ist erwünscht zu beurteilen, ob die CG-Modelle mit beliebigen konvexen und konkaven Teilen oder Parts voneinander beabstandet oder miteinander in Kontakt sind, und die Punkte einer engsten Annäherung im erstgenannten Fall und den Kontaktpunkt im letztgenannten Fall in Echtzeit zu berechnen. Nicht nur im Fall von CG-Modellen in einem Graphikcomputer, sondern auch wenn mathematische Modelle (jedes aus Vertices in dreidimensionalen Koordinaten, einem Satz Kanten und einem Satz Flächen bestehend) von Objekten gegeben sind, wird eine Suche nach den Punkten einer engsten Annäherung/dem Punkt eines Kontakts der mathematischen Modelle allgemein "Suche nach den Punkten einer engsten Annäherung" genannt.
  • Das grundlegende Verfahren, das verwendet wird, um nach den Punkten einer engsten Annäherung zu suchen, ist, Daten, die die Gestalt, Position und Lage eines bestimmten Objekts angeben, in einem Computer einzugeben und das Problem durch elementare geometrische Berechnungen zu lösen. Ein Graphiksimulator, der auf dem Gebiet von CAD verwendet wird, drückt gewöhnlich ein einzelnes Objekt aus, indem mehrere planare konvexe Polygone zusammengeklebt werden. Dementsprechend ist daher das einfachste Verfahren zum Prüfen des Zustands einer Interferenz zwischen zwei Objekten ein Verfahren zum Prüfen der Interferenz zwischen einem Paar Polygone, welche die jeweiligen Objekte bilden, bezüglich aller Arten von Kombinationen. Konkreter wird in einem Paar von in einem Raum willkürlich angeordneten Polygonen nach den Punkten einer engsten Annäherung bezüglich jedes Gitterpunktes, jeder Seite und Fläche gesucht, und die Distanz zwischen den Punkten einer engsten Annäherung wird berechnet. Selbstverständlich sind, falls die Distanz zwischen den Punkten einer engsten Annäherung Null ist, zwei Polygone im Interferenzzustand. Da dieses Verfahren von einer großen Berechnungslast der O(M1·M2) begleitet wird, worin M1 und M2 die Zahl von Gitterpunkten repräsentieren, die die beiden Objekte ausdrücken, mangelt es ihm an Echtzeiteigenschaft.
  • Historisch umfassen Verfahren zum Suchen nach den Punkten einer engsten Annäherung ein Verfahren, das ein Voronoi-Diagramm verwendet, das die Proximity-Beziehung jedes Gitterpunktes veranschaulicht, indem die senkrechten Halbierenden zwischen Gitterpunkten verbunden werden, sowie das Oktonärbaum-Verfahren, in welchem ein dreidimensionaler Raum sukzessiv Quadrant für Quadrant in acht gleiche Abschnitte geteilt und die exklusive Fläche des Objekts zu einer Datenbank gemacht wird. Diese beiden Verfahren sind in Fällen nützlich, in denen ein Objekt statisch fixiert ist; sie sind aber ungeeignet, wenn das Objekt einer Interferenzprüfung sich aufgrund einer Zerlegung oder eines Zusammensetzens sukzessiv dynamisch ändert.
  • Auf dem Gebiet der Robotik sind das Boblow-Verfahren, das Lin/Canny-Verfahren und das Gilbert-Verfahren als Hochgeschwindigkeits-Interferenzprüfalgorithmus bekannt, und jedes dieser Verfahren ermöglicht, dass die Punkte einer engsten Annäherung in einem Zeitraum von nicht mehr als O(N) (N: die Gesamtzahl von Gitterpunkten des Objektes ei ner Interferenzprüfung) berechnet werden. Die Objekte einer Untersuchung, auf die diese Verfahren anwendbar sind, sind jedoch auf konvexe Polyeder begrenzt.
  • Die meisten Gestalten, welche durch Verwenden eines handelsüblich erhältlichen dreidimensionalen CAD-Systems wie z.B. Pro/Engineer entworfen werden können, sind nicht-konvexe Polyeder, so dass ein Verfahren mit einer Echtzeiteigenschaft wie z.B. das Boblow-Verfahren, das Lin/Canny-Verfahren und das Gilbert-Verfahren nicht übernommen wird, wenn die Interferenz zwischen Teilen mit nicht-konvexen Polyedern geprüft wird, und ein Verfahren zum jeweiligen Prüfen der Interferenz zwischen jedem Paar Polygone, welche die jeweiligen Teile einer Gestalt bilden, oder ein Verfahren zum analytischen und allmählichen Lösen der Gleichung, welche die Gestalt definiert, übernommen wird.
  • Als ein Interferenzprüfverfahren für nicht-konvexe Polyeder ist das Quinlan-Verfahren bekannt. Dies ist ein Verfahren zum Bedecken eines Polyeders mit einem Satz Sphären, welche hierarchisch angeordnet werden, Prüfen der Interferenz zwischen jedem Paar Sphären, um ein Paar Polygone zu erhalten, welche sich am engsten annähern, und anschließendem Übernehmen des Gilbert-Verfahrens. Obgleich dieses Verfahren ein sehr allgemeines Verfahren ist, welches für ein willkürliches nicht-konvexes Polyeder verwendbar ist, ist es insofern mangelhaft, als, wenn die strikte Distanz zwischen zwei Objekten berechnet wird, die Zahl abzusuchender Räume zunimmt, so dass die Berechnungszeit außerordentlich verlängert wird.
  • Außerdem ist ein solches herkömmliches Interferenzprüfverfahren insofern nachteilig, als es unmöglich ist, in Echtzeit zu beurteilen, ob nicht-konvexe Polyeder voneinander beabstandet oder miteinander in Kontakt sind, und die Punkte einer engsten Annäherung im erstgenannten Fall und den Punkt eines Kontakts im letztgenannten Fall zu berechnen. Das Quinlan-Verfahren ist beschrieben in QUINLAN S:
    "EFFICIENT DISTANCE COMPUTATION BETWEEN NON-CONVEX OBJECTS" PROCEEDINGS OF THE INTERNATIONAL CONFERENCE ON ROBOTICS AND AUTOMAT, SAN DIEGO, 8.-13. MAI 1994, Bd. 4, Nr. CONF. 11, 8. Mai 1994 (1994-05-08), Seiten 3324-3329, XP000481155 INSTITUTE OF ELECTRICAL AND ELECTRONICS ENGINEERS, welches Dokument ein Interferenzprüfverfahren gemäß dem Oberbegriff von Anspruch 1 offenbart.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Dementsprechend ist eine Aufgabe der vorliegenden Erfindung, die oben beschriebenen Probleme in der verwandten Technik zu eliminieren und ein Verfahren zum Prüfen der Interferenz zwischen nicht-konvexen Polyedern mit hoher Geschwindigkeit zu schaffen.
  • Ferner ist ein Interferenzprüfverfahren vorgesehen, welches konvexe Hülsen, eine lineare Liste nahegelegener Punkte und hierarchische Sphären mit hoher Geschwindigkeit mit guter Effizienz als Vorverarbeitung für eine Interferenzprüfung erzeugen kann.
  • Noch ein anderes Ziel der vorliegenden Erfindung ist das Vorsehen eines Verfahrens zum Prüfen der Interferenz zwischen nicht-konvexen Polyedern mit hoher Geschwindigkeit durch den Einsatz eines Blasenkollisionsverfahrens, wenn die nicht-konvexen Polyeder sich eng annähern, und zum effektiven Prüfen der Interferenz zwischen Objekten, wenn sie stationär sind.
  • Gemäß der vorliegenden Erfindung ist ein Interferenzprüfverfahren zum Prüfen der Interferenz zwischen zwei Computergraphik-Objekten in der Gestalt von nicht-konvexen Polyedern vorgesehen, das umfasst:
    einen ersten Schritt zum Bedecken eines jeden der Polygone, die ein jedes der nicht-konvexen Polyeder bilden, mit einer Vielzahl von Blatt- oder Leaf-Sphären, die einen vorbestimmten Radius haben und die auf jedem Polygon angeordnet werden, und sequentiellen Einhüllen der Leaf-Sphären mit hierarchischen Sphären, um einen Binärbaum hierarchischer Einhüllungssphären zu erzeugen;
    einen zweiten Schritt zum Erhalten eines Paares nahegelegener Sphären zwischen den zwei Objekten durch Prüfen einer Interferenz zwischen Einhüllungssphären eines oberen Grades auf der Basis der Struktur des Binärbaums, Zerlegen der interferierenden Einhüllungssphären in Einhüllungssphären eines unteren Grades, Prüfen der Interferenz zwischen den Einhüllungssphären des unteren Grades und Wiederholen des Interferenzprüfprozesses und des Zerlegungsprozesses, bis keine Interferenz detektiert wird;
    einen dritten Schritt zum Erhalten eines Paares nahegelegener Polygone, das dem Paar nahegelegener Sphären entspricht; und
    einen vierten Schritt zum Prüfen der Interferenz zwischen dem Paar nahegelegener Polygone; dadurch gekennzeichnet, dass:
    der Radius der Leaf-Sphären bestimmt wird auf der Basis des Radius der Sphäre, die das entsprechende nicht-konvexe Polyeder einhüllt, und der Anzahl von Polygonen, die das nicht-konvexe Polyeder bilden, wobei der Radius der Leaf-Sphären desto kleiner ist, je kleiner die Anzahl von Polygonen ist, die das nicht-konvexe Polyeder bilden.
  • Andere Merkmale und Vorteile der vorliegenden Erfindung werden aus der folgenden Beschreibung ersichtlich werden, die in Verbindung mit den beiliegenden Zeichnungen vorgenommen wird.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist eine schematische erläuternde Ansicht der vorliegenden Erfindung;
  • 2 ist eine erläuternde Ansicht eines nicht-konvexen Polyeders;
  • 3 ist eine erläuternde Ansicht einer konvexen Hülse;
  • 4 zeigt die Systemstruktur für eine Interferenzprüfung;
  • 5 zeigt einen schematischen Ablauf einer Vorverarbeitung für eine Interferenzprüfung;
  • 6A und 6B sind erläuternde Ansichten einer ein Polyeder repräsentierenden Datenstruktur;
  • 7 ist eine erläuternde Ansicht einer Datenstruktur, die ein Polyeder durch Verwenden der Sprache C repräsentiert;
  • 8 zeigt einen Algorithmus zum Erzeugen einer konvexen Hülse;
  • 9 zeigt die Basisfunktion zum Erzeugen einer durch die Sprache C ausgedrückten zweidimensionalen konvexen Hülse;
  • 10 ist eine erläuternde Ansicht eines Prozesses zum Erzeugen einer eindimensionalen konvexen Hülse;
  • 11 ist eine erläuternde Ansicht eines Prozesses zum Erzeugen einer Upper Bridge (Oberen Brücke) und einer Lower Bridge (Unteren Brücke);
  • 12 zeigt die Struktur der zweidimensionale Hülsen vereinigenden Funktion, ausgedrückt durch die Sprache C;
  • 13 ist eine erläuternde Ansicht eines Prozesses zum Erzeugen einer konvexen Hülse;
  • 14A bis 14C sind erläuternde Ansichten eines Prozesses zum Erzeugen einer konvexen Hülse;
  • 15A bis 15D sind erläuternde Ansichten eines Prozesses zum Erzeugen einer konvexen Hülse,
  • 16A bis 16C sind erläuternde Ansichten eines Prozesses zum Erzeugen einer konvexen Hülse;
  • 17 zeigt die Struktur der vereinigenden Funktion zum Erzeugen einer dreidimensionalen konvexen Hülse, ausgedrückt durch die Sprache C;
  • 18 ist eine erläuternde Ansicht eines Prozesses zum Erzeugen einer dreidimensionalen konvexen Hülse;
  • 19 ist eine erläuternde Ansicht eines Einhüllungsprozesses;
  • 20 ist eine erläuternde Ansicht eines Patch-Prozesses mit dreieckigen Polygonen;
  • 21 zeigt eine Funktion zum Patchen dreieckiger Polygone, ausgedrückt durch die Sprache C,
  • 22 ist eine erläuternde Ansicht eines Einhüllungsprozesses und eines Patch-Prozesses im Sicherungsprozess zum Erzeugen einer konvexen Hülse;
  • 23 ist eine erläuternde Ansicht einer linearen Liste nahegelegener Punkte;
  • 24 ist eine erläuternde Ansicht von Polygondaten jedes konvexen Elements;
  • 25A bis 25D sind erläuternde Ansichten eines Algorithmus zum Erzeugen einer linearen Liste nahegelegener Punkte;
  • 26 zeigt ein Format einer Dump-Datei einer linearen Liste nahegelegener Punkte;
  • 27 ist eine erläuternde Ansicht von Blatt- oder Leaf-Sphären;
  • 28 ist eine erläuternde Ansicht eines dreieckigen Polygons;
  • 29 ist eine erläuternde Ansicht eines Prozesses zum Bedecken eines dreieckigen Polygons mit Leaf-Sphären auf einer Seite;
  • 30 ist eine erläuternde Ansicht eines Prozesses zum Bedecken des Inneren eines dreieckigen Polygons mit Leaf-Sphären;
  • 31 zeigt die Datenstruktur für einen Binärbaum unter Verwendung der Sprache C;
  • 32 zeigt einen Ablauf der Erzeugung eines Binärbaums;
  • 33 zeigt ein Beispiel eines Binärbaums;
  • 34 zeigt die grundlegende Funktion (Part 1) einer Bubble- oder Blasenkollisionsprüfung;
  • 35 zeigt die grundlegende Funktion (Part 2) einer Blasenkollisionsprüfung;
  • 36 ist eine erläuternde Ansicht einer Distanz zwischen Sphären;
  • 37 zeigt eine Datenstruktur (Part 1) für eine Interferenzprüfung unter Verwendung der Sprache C;
  • 38 zeigt eine Datenstruktur (Part 2) für eine Interferenzprüfung unter Verwendung der Sprache C;
  • 39 zeigt eine Datenstruktur (Part 3) für eine Interferenzprüfung unter Verwendung der Sprache C;
  • 40A, 40B und 40C sind die grundlegenden erläuternden Ansichten des Gilbert-Verfahrens:
  • 41 ist eine erläuternde Ansicht eines Gilbert-Verfahrens vom sukzessiven Typ;
  • 42 zeigt einen Ablauf eines vereinigenden Algorithmus;
  • 43 ist eine erläuternde Ansicht einer Interferenzprüfung in der (2+1)-Dimension;
  • 44 ist eine erläuternde Ansicht eines Metabaums;
  • 45 zeigt einen Ablauf des Algorithmus für einen sukzessiven Interferenzprüfprozess einschließlich der Erzeugung eines Metabaums;
  • 46 zeigt einen anderen Ablauf des Algorithmus für einen sukzessiven Interferenzprüfprozess einschließlich der Erzeugung eines Metabaums;
  • 47 zeigt den gesamten Ablauf eines Interferenzprüfprozesses;
  • 48 ist eine erläuternde Ansicht der Umgebung in einem CG;
  • 49 zeigt die Struktur eines Eingabesystems für dreidimensionale Daten, das eine Maus nutzt;
  • 50 ist eine erläuternde Ansicht eines Eingabeteils für dreidimensionale Koordinaten;
  • 51 ist eine erläuternde Ansicht eines Verfahrens zum Erzeugen von Leaf-Sphären:
  • 52A und 52B sind erläuternde Ansichten von Leaf-Sphären auf einem dreieckigen Polygon;
  • 53 ist eine erläuternde Ansicht eines Binärbaums hierarchischer Einhüllungssphären;
  • 54 ist eine erläuternde Ansicht eines dreidimensionalen Bildes der Struktur eines Binärbaums hierarchischer Einhüllungssphären;
  • 55 zeigt ein Beispiel der Struktur hierarchischer Einhüllungssphären (für ein rechtwinkliges Parallelepiped);
  • 56 zeigt ein Beispiel der Struktur hierarchisch einhüllender Sphären (für ein nicht-konvexes Polyeder);
  • 57A bis 57C sind eine erläuternde Ansicht eines Blasenkollisionsverfahrens vom sukzessiven Typ;
  • 58 ist ein Flussdiagramm eines Blasenkollisionsverfahrens vom sukzessiven Typ;
  • 59A bis 59G sind erläuternde Ansichten eines Verfahrens zum Suchen nach einem Paar nahegelegener Sphären/einem Paar nahegelegener Polygone;
  • 60A und 60B sind erläuternde Ansichten der Berechnungszeit im Blasenkollisionsverfahren vom sukzessiven Typ;
  • 61 ist eine erläuternde Ansicht eines Verfahrens zum Aktualisieren eines Paars nahegelegener Polygone;
  • 62 ist ein Flussdiagramm eines Verfahrens zum automatischen Bestimmen eines Aktualisierungszyklus für ein Paar nahegelegener Polygone im Blasenkollisionsverfahren vom sukzessiven Typ;
  • 63A und 63B sind erläuternde Ansichten der Berechnungszeit in einem Blasenkollisionsverfahren vom sukzessiven Typ;
  • 64 ist ein Flussdiagramm einer Modifikation des Blasenkollisionsverfahrens vom sukzessiven Typ;
  • 65 ist eine erläuternde Ansicht eines Verfahrens zum Bestimmen eines Schwellenwertes eines Bewegungsumfangs eines Objekts;
  • 66 ist ein Flussdiagramm einer Modifikation des Blasenkollisionsverfahrens vom sukzessiven Typ;
  • 67 ist eine erläuternde Ansicht eines Verfahrens zum Modifizieren des sukzessiven Blasenkollisionsverfahrens unter Verwendung des Verhältnisses der aktuellen Distanz zwischen den Punkten einer engsten Annäherung und der vorhergehenden Distanz zwischen den Punkten einer engsten Annäherung;
  • 68 ist ein Flussdiagramm einer Modifikation des Blasenkollisionsverfahrens vom sukzessiven Typ;
  • 69 ist ein Flussdiagramm eines Verfahrens zum Prüfen der Interferenz von Robotern in einer Automobilfabrik; und
  • 70 ist eine erläuternde Ansicht der Steigerung der Effizienz einer Interferenzprüfung, wenn ein Objekt in einer konvexen Hülse stationär ist.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • (A) Schematische Erläuterung der Erfindung
  • (a) Konstruktion
  • 1 ist eine schematische erläuternde Ansicht der vorliegenden Erfindung. In 1 repräsentiert die Bezugsziffer 1 einen eine konvexe Hülse erzeugenden Teil zum Erzeugen des kleinsten konvexen Polyeders (worauf im folgenden als konvexe Hülse verwiesen wird), der ein nicht-konvexes Polyeder einhüllt, unter Verwendung der Gestaltdaten des nicht-konvexen Polyeders, 2 einen eine lineare Liste nahegelegener Punkte erzeugenden Teil zum Erzeugen einer linearen Liste nahegelegener Punkte der konvexen Hülse, 3 einen Binärbaum hierarchischer Einhüllungssphären erzeugenden Teil zum Erzeugen eines Binärbaums hierarchischer Einhüllungssphären durch Bedecken jedes von Polygonen, welche das nicht-konvexe Polyeder bilden, mit mehreren Sphären (auf die im folgenden als Blatt- oder Leaf-Sphären verwiesen wird), die einen vorbestimmten Radius aufweisen und auf jedem Polygon angeordnet werden, und sequentiellen Einhüllen der Leaf-Sphären mit hierarchischen Einhüllungssphären, um einen Binärbaum hierarchischer Einhüllungssphären zu erzeugen, 4 einen Speicherteil zum Speichern der Daten auf der konvexen Hülse, der linearen Liste nahegelegener Punkte und des Binärbaums aus hierarchischen Einhüllungssphären, die erzeugt wurden, 5 einen Interferenzprüfteil für konvexe Hülsen zum Prüfen der Interferenz zwischen konvexen Hülsen gemäß dem Gilbert-Verfahren und dergleichen, 6 einen Blasenkollisionsprozess-Ausführteil zum Ausführen eines Blasenkollisionsprozesses zum Erhalten eines Paars nahegelegener Sphären, indem die Interferenz zwischen hierarchischen Einhüllungssphären eines höheren Grades geprüft wird, jede der interferierenden Einhüllungssphären in Einhüllungssphären eines niedrigeren Grades zerlegt wird, die die jeweiligen interferierenden Einhüllungssphären bilden, die Interferenz zwischen den hierarchischen Einhüllungssphären des niedrigeren Grades geprüft wird und der Zerlegungsprozess und der Interferenzprüfprozess wiederholt werden, bis keine Interferenz detektiert wird, und ein Paar Polygone, die dem Paar nahegelegener Sphären entsprechen, als Paar nahegelegener Polygone erhalten wird; und 7 einen Interferenzprüfteil für nahegelegene Polygone zum Prüfen der Interferenz zwischen einem Paar nahegelegener Polygone.
  • (b) Hochgeschwindigkeits-Vorverarbeitung für eine Interferenzprüfung
  • Um einen Interferenzprüfprozess für nicht-konvexe Polyeder mit hoher Geschwindigkeit auszuführen, ist es notwendig, konvexe Hülsen, eine lineare Liste nahegelegener Punkte und hierarchische Sphären zum Einhüllen eines Objekts mit hoher Geschwindigkeit als Vorverarbeitung zu erzeugen. In der vorliegenden Erfindung erzeugen der konvexe Hülsen erzeugende Teil 1, der eine lineare Liste nahegelegener Punkte erzeugende Teil 2 und der einen Binärbaum aus hierarchischen Einhüllungssphären erzeugende Teil 3 eine konvexe Hülse, eine lineare Liste nahegelegener Punkte bzw. einen Binärbaum aus hierarchischen Einhüllungssphären in einer Vorverarbeitung mit hoher Geschwindigkeit für eine Interferenzprüfung. Es ist daher möglich, eine lineare Liste nahegelegener Punkte für eine sukzessive Suche nach den Punkten einer engsten Annäherung zwischen konvexen Hülsen beliebiger nicht-konvexer Polyeder mit N Vertices in einem Zeitraum von N·log N zu erzeugen und ferner ein Objekt durch hierarchische Einhüllungssphären für ein Blasenkollisionsverfahren einzuhüllen.
  • 1) Vorverarbeitung mit hoher Geschwindigkeit für eine Interferenzprüfung
  • (Erzeugung einer konvexen Hülse)
  • In einem Interferenzprüfverfahren zum Erzeugen einer konvexen Hülse eines nicht-konvexen Polyeders, Prüfen der Interferenz zwischen der konvexen Hülse und dem anderen Objekt und Prüfen der Interferenz zwischen dem nicht-konvexen Polyeder und dem anderen Objekt, wenn es Interferenz gibt, teilt der konvexe Hülsen erzeugende Teil 1 die Vertices, welche das nicht-konvexe Polyeder bilden, in eine Mehrzahl von Vertexgruppen ein, in denen jeweils die Differenz zwischen den Koordinatenwerten einer ersten Achse (z.B. X-Achse) von zwei beliebigen Vertices Null oder nicht mehr als ein sehr kleiner Wert ε ist, erzeugt eine zweidimensionale konvexe Hülse für jede Vertexgruppe auf der Ebene einer zweiten und dritten Achse (z.B. Y-Z-Ebene), erzeugt dreidimensionale konvexe Hülsen durch Vereinigen jedes Paars benachbarter zweidimensionaler konvexer Hülsen und vereinigt danach sequentiell benachbarte dreidimensionale konvexe Hülsen, dadurch eine konvexe Hülse des nicht-konvexen Polyeders als das Objekt erzeugend.
  • 2) Vorverarbeitung für eine Interferenzprüfung
  • (Erzeugung einer linearen Liste nahegelegener Punkte)
  • Diese Vorverarbeitung ist eine Vorverarbeitung, um sukzessiv nach den Punkten einer engsten Annäherung im Interferenzprüfprozess für konvexe Polyeder zu suchen. Die Vorverarbeitung erhöht außerordentlich die Geschwindigkeit der sukzessiven Suche nach den Punkten einer engsten Annäherung. Die lineare Liste nahegelegener Punkte ist eine Datenstruktur, die erhalten wird, indem jeder Vertex, der ein CG-Modell bildet, mit den anderen Vertices, die damit verbunden sind, über die jeweiligen Kanten verknüpft wird. Es ist möglich, alle nahegelegenen Punkte aufzunehmen, welche mit einem Vertex von Interesse verbunden sind, indem die folgende Liste von oben sequentiell befolgt wird.
  • Der eine lineare Liste nahegelegener Punkte erzeugende Teil 2 erzeugt eine lineare Liste nahegelegener Punkte mit einer Datenstruktur, die erhalten wird, indem die Vertices aller dreieckiger Polygone, welche die konvexe Hülse bilden, so angeordnet werden, um die Vertices in einer ersten Richtung ("next" (oder "nächste")-Richtung) zu verknüpfen, und Vertices, von denen jeder mit einem Vertex von Interesse über eine Polygonkante verbunden ist, angeordnet werden, um die Vertices mit dem Vertex von Interesse in einer zweiten Richtung ("branch"-(oder "Zweig")Richtung) zu verknüpfen.
  • Diese Vorverarbeitung wird unmittelbar nach der Erzeugung einer konvexen Hülse ausgeführt.
  • 3) Vorverarbeitung mit hoher Geschwindigkeit für eine Interferenzprüfung
  • (Herausziehen der Ergebnisse einer linearen Liste nahegelegener Punkte und ihr Laden mit hoher Geschwindigkeit)
  • Die Ergebnisse eines Prozesses zum Erzeugen einer linearen Liste nahegelegener Punkte werden herausgezogen, und ihre Ausdruck- oder Dump-Datei wird auf einen Speicher mit hoher Geschwindigkeit geladen. Bezüglich eines nicht-konvexen Polyeders in einem CG-Modell, welches nicht vorverarbeitet ist, wird eine konvexe Hülse erzeugt, und eine lineare Liste nahegelegener Punkte dafür wird erzeugt. Ist die Datei der linearen Liste nahegelegener Punkte einmal erzeugt, wird aber die lineare Liste nahegelegener Punkte auf den Speicher mit hoher Geschwindigkeit geladen. Auf diese Weise ist es möglich, die lineare Liste nahegelegener Punkte eines CG-Modells, aus N Polygonen bestehend, in einem Zeitraum von O(N) in dem Speicher zu entwickeln.
  • Diese Vorverarbeitung wird unmittelbar nach der Erzeugung einer konvexen Hülse und der Erzeugung der linearen Liste nahegelegener Punkte ausgeführt.
  • 4) Vorverarbeitung für eine Interferenzprüfung
  • (Einhüllen eines Objekts durch hierarchische Einhüllungssphären)
  • Jedes Polygon, welches ein nicht-konvexes Polyeder bildet, wird mit einer Kombination mehrerer Sphären bedeckt, von denen jede eine Mitte auf dem entsprechenden Polygon aufweist, und die diese Sphären einhüllenden Sphären werden hierarchisch erzeugt. Auf diese Weise ist es möglich, die Interferenz zwischen Sphären hierarchisch zu prüfen und nach einem Paar Polygone, welche einem Paar Sphären entsprechen, die sich am engsten annähern, mit hoher Geschwindigkeit zu suchen. Die hierarchischen Einhüllungssphären werden durch ein Divide-and-Conquer-Verfahren erzeugt, und die Verarbeitung wird in einem Zeitraum von O(N·log N) bezüglich eines aus N Polygonen bestehenden CG-Modells beendet.
  • Der einen Binärbaum aus hierarchischen Einhüllungssphären erzeugende Teil 3 ordnet mehrere Sphären (Leaf-Sphären) mit einem vorbestimmten Radius auf jedem Polygon an, welches ein nicht-konvexes Polyeder bildet, um jedes Polygon zu bedecken, und hüllt sequentiell die Sphären mit hierarchischen Einhüllungssphären gemäß einem Divide-and-Conquer-Algorithmus ein, dadurch eine Binärbaumstruktur aus hierarchischen Einhüllungssphären erzeugend. In diesem Fall ist der Radius einer Leaf-Sphäre so festgelegt, dass er ein Wert ist, der dem Radius einer das nicht-konvexe Polyeder einhüllenden Sphäre entspricht, und wenn die Zahl von Polygonen, die das nicht-konvexe Polyeder bilden, klein ist, ist der Radius so festgelegt, dass er ein kleiner Wert ist, während, wenn die Zahl von Polygonen groß ist, der Radius so festgelegt ist, dass er ein großer Wert ist.
  • Diese Verarbeitung ist vom Prozess zum Erzeugen hierarchischer Einhüllungssphären im Quinlan-Verfahren insofern verschieden, als, obgleich das letztgenannte einer Abtastumwandlung ähnlich ist, in der vorliegenden Erfindung Sphären mit einem Wert einer Skala S als Parameter effizient erzeugt werden, wobei die Zahl von Polygonen berücksichtigt wird.
  • 5) Blasenkollisionsverfahren in einem Interferenzprüfprozess für nicht-konvexe Polyeder
  • Um die Interferenz zwischen nicht-konvexen Polyedern mit hoher Geschwindigkeit zu prüfen, hüllt der einen Binärbaum aus hierarchischen Einhüllungssphären erzeugende Teil 3 jedes nicht-konvexe Polyeder mit hierarchischen Einhüllungssphären ein und erzeugt einen aus den Einhüllungssphären bestehenden Baum. Der einen Blasenkollisionsprozess ausführende Teil 6 prüft eine Interferenz zwischen Sphären auf der Basis des Baums durch ein Tiefensuchverfahren und sucht nach dem Paar Sphären, welche sich am engsten annähern. Der Interferenzprüfteil 7 für nahegelegene Polygone berechnet den Punkt einer engsten Annäherung der beiden nicht-konvexen Polyeder, indem das Gilbert-Verfahren auf das Paar der Polygone angewendet wird, auf denen die Mitten der gesuchten Sphären liegen. In diesem Fall berechnet der einen Blasenkollisionsprozess ausführende Teil 6 den Punkt einer engsten Annäherung unter der Annahme, dass die Distanz zwischen Leaf-Sphären die Distanz zwischen den Mitten der Leaf-Sphären ist, dass die Distanz zwischen einer Leaf-Sphäre und einer Nicht-Leaf-Sphäre die Distanz ist, die durch Subtrahieren des Radius der Nicht-Leaf-Sphäre von der Distanz zwischen den Mitten der beiden Sphären erhalten wird, und dass die Distanz zwischen Nicht-Leaf-Sphären die Distanz ist, die durch Subtrahieren der Radien der beiden Nicht-Leaf-Sphären von der Distanz zwischen den Mitten der beiden Nicht-Leaf-Sphären erhalten wird.
  • Dieses Verfahren ist vom Quinlan-Verfahren im Berechnungsverfahren der Distanz zwischen Sphären verschieden. In diesem Verfahren wird, wenn die Distanz zwischen Sphären erhalten wird, die Definition der Distanz zwischen Sphären gemäß der Tiefe des Baums aus hierarchischen Einhüllungssphären geändert, bei dem die Sphären existieren. Folglich ist es möglich, die Zahl von Polygonpaaren zu reduzieren, die schließlich zu prüfen sind, obgleich es ein Problem eines Blasenkollisionsverfahrens ist, dass die Zahl von Polygonpaaren, die schließlich zu prüfen sind, groß ist.
  • (c) Vereinigung mit Blasenkollisionsverfahren
  • 1) Vereinigung des Gilbert-Verfahrens vom sukzessiven Typ für konvexe Hülsen mit einem Blasenkollisionsverfahren für nicht-konvexe Polyeder
  • Um die Interferenz zwischen nicht-konvexen Polyedern mit so wenig Vergeudung wie möglich zu prüfen, wird, wenn nicht-konvexe Polyeder voneinander adäquat beabstandet sind, eine konvexe Hülse erzeugt, die jedes nicht-konvexe Polyeder einhüllt, und das Gilbert-Verfahren vom sukzessiven Typ wird übernommen, um die Interferenz zwischen den konvexen Hülsen zu prüfen. Wenn die konvexe Hülse zu interferieren beginnt, wird das Gilbert-Verfahren vom sukzessiven Typ automatisch zu einem Blasenkollisionsverfahren umgeschaltet. Die Umschaltzeitsteuerung wird durch die Distanz zwischen den konvexen Hülsen bestimmt. Der konvexe Hülsen erzeugende Teil 1 erzeugt eine konvexe Hülse für jedes, und wenn die nicht-konvexen Polyeder voneinander adäquat beabstandet sind, prüft der Interferenzprüfteil 5 für konvexe Hülsen die Interferenz zwischen den konvexen Hülsen. Wenn die konvexen Hülsen zu interferieren beginnen, prüft der einen Blasenkollisionsprozess ausführende Teil 6 eine Interferenz zwischen den nicht-konvexen Polyedern durch Übernehmen eines Blasenkollisionsverfahrens. Auf diese Weise wird, indem das Gilbert-Verfahren vom sukzessiven Typ für konvexe Hülsen mit einem Blasenkollisionsverfahren (durch das Blasenkollisionsverfahren vom empfindlichen (engl. susceptive) Typ) vereinigt wird, eine unwirtschaftliche Berechnung zu der Zeit, zu der die Punkte einer engsten Annäherung erhalten werden, so weit wie möglich unterlassen.
  • 2) Vierdimensionales Gilbert-Verfahren
  • Wenn das Gilbert-Verfahren vom sukzessiven Typ für konvexe Hülsen automatisch zu einem Blasenkollisionsverfahren oder umgekehrt umgeschaltet wird, ist die Umschaltzeitsteuerung durch die Distanz zwischen den konvexen Hülsen bestimmt, die durch das Gilbert-Verfahren vom sukzessiven Typ für konvexe Hülsen berechnet wurde. Wenn die konvexen Hülsen zu interferieren beginnen, wird der Algorithmus zum Berechnen der Distanz vom dreidimensionalen Gilbert-Verfahren vom sukzessiven Typ zum vierdimensionalen Gilbert-Verfahren vom sukzessiven Typ umgeschaltet. Selbst wenn eine konvexe Hülse in die andere konvexe Hülse absorbiert wird, ist auf diese Weise ein sanftes Umschalten ohne Widerspruch möglich.
  • 3) Steigerung der Berechnungsgeschwindigkeit durch einen Metabaum
  • Bezüglich der Interferenzprüfung zwischen zwei Objekten, von denen jedes aus einem Satz nicht-konvexer Polyeder besteht, wird, um das Paar nicht-konvexer Polyeder zu berechnen, die sich am engsten annähern, ein Metabaum erzeugt, indem jedes nicht-konvexe Polyeder mit Sphären bedeckt und dann diese Sphären mit Einhüllungssphären hierarchisch eingehüllt werden. Anstelle einer jeweiligen Prüfung der Interferenz zwischen jedem Paar der nicht-konvexen Polyeder, welche jeweilige Objekte bilden, wird eine Interferenz zwischen Einhüllungssphären auf der Basis des Metabaums durch ein Tiefensuchverfahren geprüft, um so das Paar Sphären herauszusuchen, welche sich am engsten annähern. Durch Anwenden des Gilbert-Verfahrens vom sukzessiven Typ auf die Interferenzprüfung zwischen den konvexen Hülsen der nicht-konvexen Polyeder, auf denen die Mitten der herausgesuchten Sphären liegen, ist es möglich, die Punkte einer engsten Annäherung mit hoher Effizienz zu berechnen.
  • Dieser Prozess ist gekennzeichnet durch den Prozess zum Erzeugen eines Metabaums und den Prozess zum Umschalten des Tiefensuchverfahrens, auf der Basis des Metabaums, zu dem Gilbert-Verfahren vom sukzessiven Typ und dem Blasenkollisionsverfahren.
  • 4) Sukzessives Interferenzprüfverfahren einschließlich der Erzeugung eines Metabaums
  • Wenn nach den Punkten einer engsten Annäherung zwischen benachbarten nicht-konvexen Polyedern sukzessiv gesucht wird, werden der Erzeugungsprozess eines Metabaums, der Prozess gemäß dem Gilbert-Verfahren und der Blasenkollisionsprozess jeweils nur einmal alle paar Zyklen ausgeführt, und in den anderen Zyklen wird das Gilbert-Verfahren wiederholt auf die Polygonpaare angewendet, die in dem vorhergehenden Zyklus verwendet wurden, um die kürzeste Distanz zu erhalten, dadurch die Berechnungslast außerordentlich reduzierend.
  • 5) Sukzessives Interferenzprüfverfahren mit einer automatisch eingestellten Zykluszeit
  • In einem sukzessiven Interferenzprüfverfahren wird der Zyklus, in welchem die Erzeugung eines Metabaums, der Gilbert-Prozess und der Blasenkollisionsprozess ausgeführt werden, automatisch bestimmt, indem die Berechnungszeit gemessen wird, die für die Ausführung des Blasenkollisionsprozesses notwendig ist.
  • (d) Interferenzprüfung durch Blasenkollisionsverfahren vom sukzessiven Typ
  • 1) Blasenkollisionsverfahren vom sukzessiven Typ
  • Falls konvexe Hülsen miteinander zu der Zeit interferieren, zu der eine Interferenz geprüft wird, wird eine Interferenzprüfung innerhalb der konvexen Hülsen gemäß einem Blasenkollisionsverfahren ausgeführt. Da die Interferenzprüfung gemäß dem Blasenkollisionsverfahren lange Zeit in Anspruch nimmt, führt der einen Blasenkollisionsprozess ausführende Teil 6 einen Blasenkollisionsprozess nicht in jedem Zyklus, sondern einmal alle paar Zyklen aus, und mehrere Paare nahegelegener Polygone werden als die Ergebnisse der Ausführung des Blasenkollisionsprozesses gespeichert. Falls die Bewegungsdistanz/Lageänderung klein ist, führt, da die Paare bleiben wie sie sind, der Interferenzprüfteil 7 für nahegelegene Polygone eine Interferenzprüfung nur bezüglich der mehreren Paare nahegelegener Polygone aus und erhält die Punkte einer engsten Annäherung und die Punkte eines Kontakts und gibt diese aus. Durch Ausführen einer Interferenzprüfung nur bezüglich der mehreren Paare nahegelegener Polygone, die gespeichert sind, ist es möglich, die Zahl von Malen der Verarbeitung des Blasenkollisionsverfahrens zu reduzieren, das eine lange Zeit beansprucht, dadurch die Berechnungszeit verkürzend.
  • 2) Verfahren zum automatischen Bestimmen des Zyklus eines Aktualisierprozesses im Blasenkollisionsverfahren vom sukzessiven Typ aus der für die Ausführung des Blasenkollisionsprozesses notwendigen Berechnungszeit
  • Im sukzessiven Blasenkollisionsverfahren ist es notwendig, den Zyklus eines Aktualisierprozesses für nahegelegene Polygonpaare (Zyklus eines Blasenkollisionsprozesses) auf der Basis der Gestalt und der Bewegungsgeschwindigkeit eines Objekts einzustellen. Falls dieser Zyklus zu lang ist, wird ein Aktualisieren des Paars nahegelegener Polygone so verzögert, dass viele falsche Ergebnisse ausgegeben werden. Falls auf der anderen Seite der Zyklus eines Aktualisierprozesses für ein Paar nahegelegener Polygone zu kurz ist, nimmt die Echtzeiteigenschaft ab, da der Aktualisierungsprozess lange Zeit in Anspruch nimmt. Eine Einstellung des Zyklus durch das Trial-and-Error-Verfahren ist schwierig. Gemäß der vorliegenden Erfindung wird die für die Ausführung eines Blasenkollisiosprozesses notwendige Berechnungszeit jedes Mal gemessen, und der Zyklus eines Aktualisierprozesses für ein Paar nahegelegener Polygone wird aus der Berechnungszeit automatisch bestimmt.
  • 3) Korrektur im sukzessiven Blasenkollisionsverfahren (Beurteilung aus dem Bewegungsumfang eines Objekts)
  • Da angenommen wird, dass die Bewegungsdistanz/Lageänderung im sukzessiven Blasenkollisionsverfahren klein ist, werden häufig falsche Ergebnisse ausgegeben, falls ein Objekt sich in einem großen Umfang bewegt. Wenn die Bewegungsdistanz/Lageänderung größer als ein vorbestimmter Schwellenwert ist, führt der einen Blasenkollisionsprozess ausführende Teil 6 einen Blasenkollisionsprozess aus, um das Paar nahegelegener Polygone zu aktualisieren, selbst wenn der Aktualisierungsprozess für Polygonpaare nicht kommt. Auf diese Weise werden korrekte Ergebnisse der Interferenzprüfung erhalten.
  • 4) Korrektur im sukzessiven Blasenkollisionsverfahren (Beurteilung aus der Bewegungsgeschwindigkeit eines Objekts)
  • Da im sukzessiven Blasenkollisionsverfahren angenommen wird, dass die Bewegungsdistanz/Lageänderung klein ist, werden häufig falsche Ergebnisse ausgegeben, falls ein Objekt sich in einem großen Umfang bewegt. Wenn die Bewe gungsgeschwindigkeit eines Objekts größer als ein vorbestimmter Schwellenwert ist, führt der einen Blasenkollisionsprozess ausführende Teil 6 den Blasenkollisionsprozess aus, um die Paare nahegelegener Polygone zu aktualisieren, selbst wenn der Aktualisierungsprozess für Polygonpaare nicht kommt. Auf diese Weise werden korrekte Ergebnisse der Interferenzprüfung erhalten.
  • 5) Korrektur im sukzessiven Blasenkollisionsprozess (Beurteilung aus dem Verhältnis der Distanzen zwischen den Punkten einer engsten Annäherung)
  • Da im sukzessiven Blasenkollisionsverfahren angenommen wird, dass die Bewegungsdistanz/Lageänderung klein ist, werden häufig falsche Ergebnisse ausgegeben, falls ein Objekt sich in einem großen Umfang bewegt. Wenn das Verhältnis der Distanz zwischen den Punkten einer engsten Annäherung zur gegenwärtigen Zeit und derjenigen zur vorhergehenden Zeit größer als ein vorbestimmter Schwellenwert ist, führt der einen Blasenkollisionsprozess ausführende Teil 6 einen Blasenkollisionsprozess aus, um das Paar nahegelegener Polygone zu aktualisieren, selbst wenn der Aktualisierungsprozess für Polygonpaare nicht kommt. Auf diese Weise werden korrekte Ergebnisse der Interferenzprüfung erhalten.
  • 6) Steigerung der Effizienz einer Interferenzprüfung außerhalb der konvexen Hülsen, wenn die Objekte stationär sind
  • Nachdem eine Interferenzprüfung einmal ausgeführt ist, ist es, falls alle Objekte einer Prüfung stationär sind, nicht notwendig, die Ergebnisse der Interferenzprüfung im vorhergehenden Zyklus zu aktualisieren. Falls der Geschwindigkeitsbefehl und die Positionsabweichung Null sind, werden die Ergebnisse der Interferenzprüfung im vorhergehenden Zyklus verwendet wie sie sind, um die Berechnung in der Interferenzprüfung wegzulassen. Gemäß diesem Verfahren ist, wenn es nicht weniger als zwei Gruppen von Objekten einer Interferenzprüfung gibt, eine Berechnung nur in der Interferenzprüfung von Gruppen notwendig, die ein sich bewegen des Objekt enthalten, so dass die Effizienz gesteigert wird.
  • 7) Steigerung der Effizienz einer Interferenzprüfung innerhalb konvexer Hülsen, wenn die Objekte stationär sind
  • Nachdem eine Interferenzprüfung einmal in den konvexen Hülsen gemäß dem sukzessiven Blasenkollisionsverfahren ausgeführt ist, ist es, falls alle Objekte einer Prüfung stationär sind, nicht notwendig, die Ergebnisse der Interferenzprüfung im vorhergehenden Zyklus zu aktualisieren.
  • Falls der Geschwindigkeitsbefehl und die Positionsabweichung Null sind, werden die Ergebnisse der Interferenzprüfung im vorhergehenden Zyklus verwendet wie sie sind, um die Berechnung in der Interferenzprüfung wegzulassen. Es ist jedoch notwendig, den Blasenkollisionsprozess einmal auszuführen, um das korrekte Paar nahegelegener Polygone in dem Aktualisierungszyklus für nahegelegene Polygone zu erhalten, nachdem die Objekte stationär werden. Gemäß diesem Verfahren ist, wenn es nicht weniger als zwei Gruppen von Objekten einer Interferenzprüfung gibt, eine Berechnung nur in der Interferenzprüfung von Gruppen notwendig, die ein sich bewegendes Objekt enthalten, so dass die Effizienz gesteigert wird.
  • (B) Erzeugung einer konvexen Hülse
  • (a) Schematische Erläuterung eines Interferenzprüfprozesses für nicht-konvexe Polyeder
  • Um die Interferenz zwischen nicht-konvexen Polyedern zu prüfen, wird ein minimales konvexes Polyeder (konvexe Hülse) (3) erzeugt, das jedes nicht-konvexe Polyeder (2) einhüllt, und die Interferenz zwischen den konvexen Hülsen wird geprüft, wenn die Distanz zwischen den nicht-konvexen Polyedern adäquat lang ist. Wenn die konvexen Hülsen zu interferieren beginnen, wird die Interferenz zwischen den nicht-konvexen Polyedern geprüft, indem das Blasenkollisionsverfahren übernommen wird. Für diese Interferenzprüfung für nicht-konvexe Polyeder ist es notwendig, eine konvexe Hülse für jedes nicht-konvexe Polyeder als Vorverarbeitung zu erzeugen.
  • (b) Systemstruktur
  • 4 zeigt die Systemstruktur zum Ausführen der Erzeugung einer konvexen Hülse als Vorverarbeitung und eines Interferenzprüfprozesses. In 4 repräsentiert die Bezugsziffer 11 eine Graphik-Workstation GWS und 12 ein dreidimensionales CAD-System. In der Workstation 11 repräsentiert die Bezugsziffer 11a einen Prozessor zum Ausführen einer Vorverarbeitung als Interferenzprüfung, eines Interferenzprüfprozesses und anderer Prozesse, 11b einen ROM zum Speichern eines Vorverarbeitungsprogramms CHP zum Erzeugen einer konvexen Hülse, eines Interferenzprüfprogramms ICP etc., 11c einen RAM zum Speichern der Gestaltdaten, die durch das dreidimensionale CAD-System 12 entworfen wurden, anderer Entwurfsdaten und der Ergebnisse einer Berechnung, 11d eine Kommunikationsschnittstelle zwischen der Graphik-Workstation und dem CAD-System 12, 11e eine Anzeigeeinheit, 11f eine Tastatur, 11g einen Bedienungsteil wie z.B. eine Maus, 11h ein Plattenlaufwerk für Disketten und 11i eine Festplatte.
  • (c) Schematischer Ablauf
  • 5 zeigt einen schematischen Ablauf der Verarbeitung (Vorverarbeitung zur Interferenzprüfung) der Erzeugung einer konvexen Hülse.
  • Das dreidimensionale CAD-System 12 erzeugt ein Gestaltmodell (nicht-konvexes Polyeder) und gibt es in die Graphik-Workstation 11 ein, um es in dem RAM 11c zu speichern (Schritte 1001, 1002). Das CAD-System 12 gibt alle Polygondaten als die Gestaltmodelldaten ein, die erhalten werden, wenn das nicht-konvexe Polyeder durch die Polygone bedeckt wird. Die Polygondaten enthalten die Koordinatenwerte jedes Vertex eines Polygons und Informationen, die die Richtung angeben, in der Licht an diesem Punkt reflektiert wird. Die allgemeinsten Polygondaten werden dargestellt, indem dreieckige Polygone zusammengeklebt werden. In den in 5 gezeigten Daten dreieckiger Polygone geben die drei reellen Zahlen, die nach "normal" kommen, die Richtung an, in der Licht reflektiert wird, und die drei reellen Zahlen, die nach "vertex" kommen, repräsentieren die Koordinatenwerte des Vertex.
  • Wenn die Ausführung der Vorverarbeitung (Erzeugung einer konvexen Hülse) befohlen wird, erzeugt der Prozessor 11a eine konvexe Hülse, indem die Gestaltdaten des nicht-konvexen Polyeders verwendet werden, auf der Basis des Programms CHP zum Erzeugen einer in dem ROM 11b gespeicherten konvexen Hülse (Schritt 1003). Nach der Erzeugung der konvexen Hülse wird eine lineare Liste nahegelegener Punkte, welche später beschrieben wird, erzeugt, indem ein Algorithmus zum Erzeugen einer linearen Liste nahegelegener Punkte verwendet wird, und entwickelt sie im RAM 11c (Schritte 1004, 1005). Eine exklusive Dump-Datei HL wird auf der Basis der linearen Liste nahegelegener Punkte erzeugt und in der Festplatte 11i oder dergleichen gespeichert. Falls die lineare Liste nahegelegener Punkte danach notwendig ist, wird keine neue lineare Liste nahegelegener Punkte erzeugt, sondern die Informationen in der exklusiven Dump-Datei werden durch einen Algorithmus zum Entwickeln einer linearen Liste nahegelegener Punkte in der Form von Daten reproduziert (Schritt 1007).
  • (d) Datenstruktur zum Darstellen eines Polyeders
  • Es wird nun angenommen, dass ein Polyeder aus einem Satz dreieckiger Teilflächen oder Patches besteht. Falls jedes dreieckige Patch (siehe 6A) durch die Sprache C dargestellt wird, hat sie die Datenstruktur in der in 7 gezeigten Form.
  • In 7 ist die grundlegendste Ausdrucksklasse nicht "Vertex", sondern "Edge (Kante)". Jede Kante hat eine Richtung, und es wird angenommen, dass die Zeigervariable, welche die von einem Vertex u in Richtung eines Vertex v weisende Kante angibt, e ist, der Zeiger, der den Ursprung angibt, orig ist, der Zeiger, der die Kante angibt, die vom Vertex u in Richtung des Vertex v weist, sym ist, der Zeiger, der die Kante angibt, die vom Vertex v in Richtung eines Vertex w weist, lnext ist, und der Zeiger, der die Kante angibt, die vom Vertex u in Richtung des Vertex w weist, onext ist. Eine Integer-Variable "color" ist im Prozess zum Erzeugen einer konvexen Hülse notwendig, und sie nimmt einen der Werte "blue (blau)", "purple (violett)" und "red (rot)" an. Die Bedeutung von "blue", "purple" und "red" wird später erläutert. Als eine ein Dreieck u-v-w ausdrükkende Klasse ist Facet vorbereitet, und jede Kante hat eine Zeigervariable "left (links)", die "Facet" auf der linken Seite angibt.
  • Die Klasse "Vertex", die einen Vertex ausdrückt, enthält einen dreidimensionalen Vektor v, der Koordinaten des Vertex repräsentiert, und einen Vektor dv, der ein Vektor v mit einer addierten Zufallsabweichung ist (Vektor 3 ist der Typname, der einen dreidimensionalen reellen Vektor unterdrückt), und Zeigervariablen "next", pre zum Darstellen der Konturstruktur.
  • "Convex" ist eine Klasse, die eine konvexe Hülse ausdrückt, und hat eine Zeigervariable "edge", die das führende Element einer die konvexe Hülse bildenden Kante angibt.
  • Wie in 6B gezeigt ist, sind edge→orig, edgemin→orig Variablen, die den maximalen Vertex bzw. den minimalen Vertex bezüglich der Richtung der X-Achse der konvexen Hülse H angeben. Zeigervariablen maxA., minX, maxY und minY, welche Vertices angeben, werden nur in der ersten Hälfte des Prozesses zum Erzeugen einer konvexen Hülse verwendet. Der Zeiger "side (Seite)" gibt im Divide-and-Conquer-Verfahren rechts oder links an, und "vent" gibt die Gesamtzahl von Vertices auf den dreieckigen Patches der konvexen Hülse an. Die Zeigervariable "vertexes" gibt den gleichen Vertex wie edgemin→orig an, und es ist möglich, nach all den Vertices, die die konvexe Hülse bilden, in einer aufsteigenden Reihenfolge eines Koordinatenwertes zu suchen, indem die Vertices beginnend von "vertexes" aus in der "next"-Richtung verfolgt werden. Diese Suche nach Vertices schließt eine Suche nach den Vertices innerhalb der konvexen Hülse wie z.B. Vi, Vj und Vk in 6B ein. Die Zeigervariable "vertexes" wird in der ersten Hälfte eines Divide-and- Conquer-Prozesses und in einem Sicherungsprozess verwendet. "List (Liste)" ist eine Klasse, die im letzten Prozess der Erzeugung einer konvexen Hülse notwendig ist, der später ausführlich beschrieben wird.
  • Gemäß der in 7 gezeigten Datenstruktur ist es möglich, die Vertices, die mit einem bestimmten Vertex über Kanten verbunden sind, im Uhrzeigersinn oder Gegenuhrzeigersinn durch die folgenden Prozeduren herauszunehmen. Alle folgenden Programme sind durch die Sprache C dargestellt.
    Edge *edumy0 = sym;
    Edge *edumyl = sym;
    edumy0 = edumy0→lnext→sym;//clockwise order
    edumyl = edumyl→0next→sym; //counterclockwise order
  • (e) Algorithmus zum Erzeugen einer dreidimensionalen konvexen Hülse
  • 8 zeigt einen Algorithmus zum Erzeugen einer dreidimensionalen konvexen Hülse beim Schritt 1003 in 5 und zeigt die grundlegende Funktion zum Erzeugen einer konvexen Hülse. Dieser Algorithmus ist in einem Wort ein Algorithmus zum Erzeugen einer konvexen Hülse durch das Divideand-Conquer-Verfahren, während jeder Vertex bezüglich der X-Achse sortiert wird. Die Prozedur ist wie folgt.
  • Die Vertexdaten eines Dreieckzeigers werden eingegeben (Schritt 1101). Die Daten werden in einer zyklischen Form eingegeben, wie im Block bei Schritt 1101 in 8 gezeigt. Jeder Vertex wird mit den Vertices in den Richtungen "next" und "pre" mit einer Elementvariable con→vertexes der Zeigervariable con der Klasse "Convex" als führendes Element verbunden. Der mit "vertexes" verbundene "vertex" wird erhalten, indem die Vertexdaten in der in 7 gezeigten Eingabedatei in der Reihenfolge einer Eingabe und Sortierung von Vertices in Richtung der X-Achse verbunden werden.
  • Die maxX, minX, welche das Maximum bzw. Minimum in Richtung der X-Achse sind, werden dann bezüglich der Modelldaten con berechnet (Schritt 1102). Das heißt, die Vertices mit dem maximalen Wert und dem minimalen Wert in der Richtung der X-Achse werden aus einem Satz Vertices "vertexes" herausgesucht, und die jeweiligen Adressen werden in maxX und minX eingegeben.
  • Es wird beurteilt, ob die Differenz zwischen dem Maximalwert und dem Minimalwert der x-Koordinate kleiner als der sehr kleine Wert ε ist oder nicht, und falls die Antwort eine Bestätigung ist, wird eine zweidimensionale konvexe Hülse erzeugt (Schritt 1103). Mit anderen Worten, es wird, wenn der Satz von Vertices "vertexes" auf einer Ebene ist, die senkrecht zur X-Achse ist, und die Differenz zwischen dem Maximalwert maxX→v(0) und dem Minimalwert minX→v(0) der X-Koordinate kleiner als der sehr kleine Wert ε ist, eine zweidimensionale konvexe Hülse erzeugt, indem die Funktion MakeConvex2Dim(con) zum Erzeugen einer zweidimensionalen konvexen Hülse verwendet wird.
  • Falls die Differenz zwischen dem maximalen Wert und dem minimalen Wert der X-Koordinate nicht kleiner als der sehr kleine Wert ε ist, wird der Satz Vertices "vertexes" in der Richtung der X-Achse in zwei Teile geteilt (Schritt 1104). Der Satz Vertices "vertexes" wird in zwei Teile geteilt, nämlich conLeft und conRight, mit dem zentralen Wert des maximalen Wertes maxX→v(0) und des minimalen Wertes minX→v(0) als Grenze. Wenn s zum Beispiel gleich (maxX→v(0) + minX→v(0))/2 ist (s ist ein zentraler Wert), wird, falls Vertex→(0) < s ist, der Vertex mit con-Left→vertexes verbunden, während dann, falls Vertex→v(0) > s ist, der Vertex mit conRight→vertexes verbunden wird.
  • Eine konvexe Hülse wird dann aus conLeft und conRight reflexiv erzeugt, indem MakeConvex( ) zum Erzeugen einer konvexen Hülse verwendet wird (Schritt 1105). Danach werden conLeft, conRight vereinigt, bis der Satz Vertices "ver texes" nicht in zwei Teile oder Parts geteilt werden kann (Schritt 1106). Mit anderen Worten, die reflexiv erzeugten konvexen Hülsen conLeft und conRight werden vereinigt, um eine konvexe Hülse zu erzeugen.
  • In einem allgemeinen Divide-and-Conquer-Verfahren wird ein Prozess zum Teilen eines Satzes in zwei Parts und reflexiven Vereinigen dieser wiederholt, um eine Endausgabe zu erhalten, wie in der obigen Verarbeitung gezeigt ist. In einem Divide-and-Conquer-Verfahren ist die Algorithmusabhängigkeit hauptsächlich im Vereinigungsprozess ausgedrückt. In der in 8 gezeigten Prozedur repräsentiert die Funktion Merge3DIM(conLeft, conRight) den Vereinigungsprozess. Merge3DIM(conLeft, conRight) wird später ausführlich beschrieben.
  • (f) Algorithmus zum Erzeugen einer zweidimensionalen konvexen Hülse
  • Die Funktion zum Erzeugen einer zweidimensionalen konvexen Hülse hat annähernd die gleiche Struktur wie die zum Erzeugen einer dreidimensionalen konvexen Hülse, wie in 9 gezeigt ist. Die erstgenannte ist in dem Prozess zum Erzeugen einer zweidimensionalen konvexen Hülse bei Schritt 1201 und dem Vereinigungsprozess für eine zweidimensionale konvexe Hülse bei Schritt 1202 verschieden.
  • Der Prozess zum Erzeugen einer eindimensionalen konvexen Hülse beim Schritt 1201 wird beendet, indem das obere Ende und das untere Ende der Vertices, die parallel zur Z-Achse angeordnet sind, in den Richtungen "next" und "pre" kombiniert werden, wie in 10 gezeigt ist.
  • 11 zeigt die Einzelheiten des Vereinigungsprozesses Merge2Dim(conLeft, conRight) für eine zweidimensionale konvexe Hülse. Wie in 11 gezeigt ist, ist der Vereinigungsprozess Merge2Dim( , ) ein Prozess zum Erzeugen einer Kante "Upper Bridge (Obere Brücke)", die die konvexe Hülse conLeft, conRight von oben bedeckt, und einer Kante "Lower Bridge (Untere Brücke)", die sie von unten bedeckt.
  • Um Upper Bridge zu erzeugen, werden Kanten sequentiell aufwärts in den Richtungen "next" und "pre" von der Kante aus verfolgt, die econLeft→maxY und econRight→minxY als die Anfangswerte kombiniert, und die oberste Kante wird als Upper Bridge erhalten. Ähnlich ist es durch Verfolgen nach unten in den Richtungen "pre" und "next" möglich, eine Lower Bridge zu erzeugen.
  • 12 zeigt die detaillierte Struktur der Vereinigungsfunktion Merge2Dim(conLeft, conRight). Bei Schritt 1301 werden die Anfangswerte festgelegt, und Upper Bridge wird durch die Schleife (Anweisung "do" bis "while ...") bei Schritt 1302 und Lower Bridge durch die Schleife (Anweisung "do" bis "while ...") bei Schritt 1303 erzeugt. W→ConvexJudgeUp2Dim(u,v) ist eine Funktion zum Beurteilen, ob der Vertex w oberhalb oder unterhalb der die Vertices u und v kombinierenden geraden Linie ist.
  • 13 bis 16 sind erläuternde Ansichten eines Prozesses zum Erzeugen einer konvexen Hülse. In 13 repräsentiert die Bezugsziffer 21 ein nicht-konvexes Polyeder mit Vertices a bis k. Die X-Koordinaten der Vertices a bis e sind gleichermaßen X = x1, die X-Koordinate des Vertex f ist X = x2, und die X-Koordinaten der Vertices g bis k sind X = 0.
  • Durch Anwenden des Algorithmus zum Erzeugen einer dreidimensionalen konvexen Hülse, dargestellt in 8, auf das in 13 gezeigte nicht-konvexe Polyeder werden die Vertices a bis k in eine erste Vertexgruppe geteilt, die aus Vertices g bis k besteht (siehe 14A), in der die Differenz in der X-Koordinate innerhalb des sehr kleinen Wertes ε liegt, eine zweite Vertexgruppe, die aus Vertices a bis e besteht (siehe 14B), und eine dritte Vertexgruppe, die aus einem Vertex f besteht (siehe 14C). Der Algorithmus zum Erzeugen einer zweidimensionalen konvexen Hülse wird auf jede dieser Vertexgruppen angewendet. Wenn zum Beispiel der Algorithmus zum Erzeugen einer zweidimensionalen konvexen Hülse auf die aus den Vertices a bis e bestehende zweite Vertexgruppe angewendet wird, wird sie in drei Gruppen geteilt; eine erste Vertexgruppe, die aus den Vertices a, b besteht, in der die Differenz in der Y-Koordinate innerhalb von ε liegt, eine zweite Vertexgruppe, die aus dem Vertex d besteht, und eine dritte Vertexgruppe, die aus den Vertices c, e besteht. Der Algorithmus zum Erzeugen einer eindimensionalen konvexen Hülse wird auf jede der Vertexgruppen angewendet. Danach wird die Vereinigungsfunktion Merge2Dim( , ) zum Erzeugen einer zweidimensionalen konvexen Hülse auf die eindimensionale konvexe Hülse angewendet, um eine zweidimensionale konvexe Hülse zu erzeugen. Wenn z.B. die Vereinigungsfunktion auf die eindimensionale konvexe Hülse angewendet wird, die aus den zweiten und dritten Vertexgruppen erzeugt wurde, bildet die Kante de eine obere Brücke und die Kante dc eine untere Brücke, wie in 15A gezeigt ist, und eine zweidimensionale konvexe Hülse cde wird erzeugt (15B). Danach wird die Vereinigungsfunktion auf die eindimensionale konvexe Hülse, die aus der ersten Vertexgruppe a, b erzeugt wurde, und die zweidimensionale konvexe Hülse cde angewendet. Als Folge bildet die Kante ae eine obere Brücke, und die Kante bc bildet eine untere Brücke, wie in 15c gezeigt ist, und eine zweidimensionale konvexe Hülse abce wird erzeugt (siehe 15D).
  • Ähnlich wird eine zweidimensionale konvexe Hülse erzeugt, indem der Algorithmus zum Erzeugen einer zweidimensionalen konvexen Hülse auf die erste Vertexgruppe g bis k angewendet wird.
  • Nachdem die Erzeugung der zweidimensionalen konvexen Hülsen beendet ist, wird die Vereinigungsfunktion Merge3Dim( , ) zum Erzeugen einer dreidimensionalen konvexen Hülse auf die zweidimensionalen konvexen Hülsen angewendet, dadurch eine dreidimensionale konvexe Hülse erzeugend. Wenn zum Beispiel die Funktion Merge3Dim( , ) auf die zweidimensionale konvexe Hülse abce und die zweidimensionale Hülse f angewendet wird, wird eine dreidimensionale konvexe Hülse abcef erzeugt (16A), und wenn die Funktion Merge3Dim( , )auf die dreidimensionale konvexe Hülse abcef und die zweidimensionale konvexe Hülse ghik angewendet wird, wird eine dreidimensionale konvexe Hülse abcefghik erzeugt (16B).
  • (g) Vereinigungsprozess
  • Die Essenz des Algorithmus zum Erzeugen einer dreidimensionalen konvexen Hülse ist die in 17 gezeigte Vereinigungsfunktion, die aus den folgenden vier Phasen besteht.
  • Phase 0: Direkte Erzeugung einer konvexen Hülse, wenn die Anzahl von Vertices klein ist
  • In der direkten Erzeugung einer konvexen Hülse ist Aufmerksamkeit erforderlich, wenn die Anzahl von Vertices nicht mehr als 3 ist. Da es unmöglich ist, ein Tetraeder zusammenzukleben, welches die minimale konvexe Hülse ist, ist es in diesem Fall notwendig, die Zahl von Vertices im Vereinigungsprozess zu erhöhen, um ein Tetraeder direkt zu erzeugen.
  • Diese Phase ist ein Prozess zum direkten Erzeugen einer konvexen Hülse, wenn die Anzahl von Vertices conLeft, con-Right klein ist, und wird durch die Funktionen MakeConvex-LowNumber( , ), MakeConvexBackL( , ) und MakeConvexBackR( , ausgedrückt. Der Prozess einer Funktion MakeConvexLowNumber( , ) ist gemäß den Werten von conLeft→vent, con-Right→vent verzweigt. Falls die Gesamtzahl von Vertices conLeft, conRight kleiner als 4 ist, werden die Vertices conLeft, conRight wieder gemäß den Zeigern "next" und pre geklebt und in "vertexes" gespeichert. Wenn die Gesamtzahl von Vertices 4 erreicht, wird ein Tetraeder direkt erzeugt, indem die Funktionen MakeTetra22( , ) und MakeTetra13( , ) verwendet werden. Wenn conLeft→vent = 2 und conRight→vent = 3 oder conLeft→vent = 3 und conRight→vent = 2 oder con-Left→vent = 3 und conRight→vent = 3 sind, wird ein Tetraeder zuerst direkt erzeugt, und eine konvexe Hülse wird dann erzeugt, indem ein Sicherungsprozess (28) verwendet wird, der später erläutert wird.
  • Die Funktion MakeConvexBackL( , ) wird zum Vereinigen verwendet, wenn conLeft→vent nicht mehr als 3 ist und con- Right→vent nicht mehr als 4 ist. Da conRight schon eine konvexe Hülse für ein Tetra- oder eher Polyeder bildet, wird die Funktion zum Vereinigen der Vertices conLeft mit der konvexen Hülse conRight nacheinander verwendet. Diese Funktion wird durch Einbeziehen eines Sicherungsprozesses gebildet. Ähnlich wird MakeConvexBackR( , ) zum Vereinigen verwendet, wenn conRight→vent nicht mehr als 3 ist und conLeft→vent nicht mehr als 4 ist.
  • Auf diese Weise bilden conLeft, conRight konvexe Hülsen eines Tetra- oder eher Polyeders durch eine Verarbeitung, die MakeConvexLowNumber( , ), MakeConvexBackL( , ) oder MakeConvexBackR( , ) verwendet. In Phase 1 und danach werden diese conLeft, conRight verwendet.
  • Phase 1: Erzeugung einer Upper Bridge
  • Es wird eine in 18 gezeigte Upper Bridge erzeugt. Um die Verarbeitung durch eine möglichst geringe Anzahl von Malen einer Berechnung auszuführen, werden die Maximumkante conLeft→edge von conLeft in der X-Achsenrichtung und die Minimumkante conRight→edgemin von conRight in der X-Achsenrichtung bei Anfangswerten festgelegt, und die Vertices werden in der Umgebung aufwärts verfolgt.
  • Zu diesem Zweck werden jeder Vertex und die Vertices in der Umgebung auf die X-Z-Ebene projiziert, um eine zweidimensionale konvexe Hülse zu bilden, und eine Beurteilung diesbezüglich, ob der Vertex in der Umgebung oberhalb der aktuellen Bridge oder Brücke liegt oder nicht, wird wiederholt.
  • Phase 2: Einhüllungsprozess
  • Der Einhüllungsprozess ist eine Basis im Vereinigungsprozess für eine dreidimensionale konvexe Hülse. Zusammengefaßt ist er ein Prozess, bei dem die konvexen Hülsen con-Left, conRight, wie in 19 gezeigt, eingehüllt werden. Im Prozess einer Einhüllung wird die Farbe der Kante von jeder der konvexen Hülsen conLeft, conRight BLAU (BLUE) in VIOLETT (PURPLE) oder ROT (RED) geändert. Die Anfangsfarbe jeder Kante ist BLAU, und die Farbe der Kante, welche die Grenze einer Einhüllung bildet, wird in VIOLETT geändert, und die Farbe einer Kante, die in der Umgebung einer VIOLETT-Kante liegt und in der konvexen Hülse enthalten ist, wird in ROT geändert. Die Farbe der anderen Kanten bleibt BLAU. Zu dem Zeitpunkt, wenn ein Vereinigen schließlich beendet ist, wird die Farbe jeder Kante der vereinigten konvexen Hülse auf BLAU zurückgesetzt.
  • Der Einhüllungsprozess wird im folgenden schematisch erläutert.
  • Nach den Vertices in der Umgebung der Vertices utop und vtop von Upper Bridge wird gesucht, um den anderen Vertex (den dritten Vertex) des dreieckigen Patch zu erhalten, das eine Einhüllung bildet. Es wird angenommen, dass der Kandidat in der Umgebung von utop FirstWinL ist und der andere Vertex in der Umgebung von utop unter der Ebene liegt, auf der das Dreieck utop-vtop-FirstWinL zusammengeklebt ist. Allgemein gibt es zwei Vertices wie FirstWinL in Richtung des Uhrzeigersinns und Gegenuhrzeigersinns wie von Upper Bridge aus gesehen; aber es ist möglich, den Vertex in Richtung des Uhrzeigersinns exklusiv herauszunehmen, indem die Bedingung festgelegt wird, dass die Normale aufwärts gerichtet sein sollte, wenn das Dreieck in der Reihenfolge utop-FirstwinL-vtop betrachtet wird. Ähnlich wird der Vertex in der Umgebung von vtop als FirstWinR herausgenommen. Schließlich wird beurteilt, ob FirstWinR oberhalb der Ebene liegt oder nicht, auf der das Dreieck utop-FirstWinL-vtop zusammengeklebt ist, um den dritten Vertex des ersten Dreiecks auszuwählen. In 19 wird zuerst FirstWinL ausgewählt. Nachdem FirstWinL ausgewählt ist, wird eine ähnliche Operation wiederholt, während FirstWinL-vtop als Upper Bridge betrachtet wird. In dem in 19 gezeigten Beispiel wird als Ergebnis des Heraussuchens des Vertex in der Umgebung von FirstWinL ein Dreieck FirstWinL-u-vtop ausgewählt. Es wird eine Beurteilung diesbezüglich getroffen, ob FirstWinR oberhalb des Dreiecks FirstWinL-u-vtop liegt oder nicht, und FirstWinR wird ausgewählt. In diesem Fall ist das Dreieck FirstWinL-FirstWinR-vtop ein zweites dreiecki ges Patch. Danach werden u und v aktualisiert, bis u und v mit utop bzw. vtop übereinstimmen. Jedes FirstWinL und FirstWinR wird allgemein gewinnender Vertex genannt.
  • Beim Heraussuchen eines zweiten und folgender gewinnender Vertices ist es nicht notwendig, alle Vertices in der Umgebung des Vertex herauszusuchen. Es ist möglich, den Vertexkandidaten ausschließlich durch ein Heraussuchen im Uhrzeigersinn im Falle von conRight und ein Heraussuchen im Gegenuhrzeigersinn im Falle von conLeft auszuwählen, während die vorhergehende Randkante als der Anfangswert genommen wird.
  • Im Prozess einer Auswahl eines gewinnenden Vertex werden die Farben der Randkante und der Kante in deren Umgebung geändert. Im Falle eines ersten dreieckigen Patch wird nur die Farbe der Randkante (Kante utop-FirstwinL in 19) in VIOLETT geändert. In den zweiten und folgenden dreieckigen Patches wird nicht nur die Farbe der Randkante in VIOLETT geändert, sondern auch die Farben aller Kanten, die innerhalb der vereinigten konvexen Hülse verborgen sind, unter den Kanten in der Umgebung des gewinnenden Vertex werden in ROT geändert. Diese Verarbeitung wird bis zum letzten dreieckigen Patch wiederholt. Nachdem das letzte dreieckige Patch geklebt ist, werden die Kanten in der Umgebung von utop und vtop untersucht, und die Farben der Kanten, die in der vereinigten konvexen Hülse enthalten sind, werden in ROT geändert.
  • Als Ergebnis werden in diesem Prozess all die Sätze Vertices dreieckiger Patches, die eine vereinigte konvexe Hülse bilden, ausgewählt, und sie werden für jedes dreieckige Patch in der Klasse "List (Liste)", die in 7 dargestellt ist, gespeichert, und erzeugen eine lineare Liste in der Richtung "next".
  • Phase 3: Patch-Prozess mit dreieckigen Polygonen
  • Dies ist ein Prozess, um dreieckige Polygone auf der Basis der linearen Liste "List" tatsächlich zusammenzusetzen oder zu patchen, die aus dem Satz Vertices der dreieckigen Patches besteht. Dieser Prozess ist allgemein in drei Stufen geteilt; Anfangs-Patch, Zwischen-Patch und End-Patch, wie in 20 und 21 gezeigt ist. Das Verfahren zum Erzeugen eines dreieckigen Patch ist in drei Stufen geringfügig verschieden. Im Anfangs-Patch wird ein Verfahren zum Erzeugen eines dreieckigen Patch durch Verwenden einer Kante und eines Vertex genutzt. Im Zwischen-Patch wird ein Verfahren zum Erzeugen eines dreieckigen Patch durch Verwenden von zwei Kanten verwendet. Im End-Patch wird ein Verfahren zum Erzeugen eines dreieckigen Patch durch Verwenden von drei Kanten genutzt. In der Funktion PatchTriangle( , ), die jedes Erzeugungsverfahren ausdrückt, ist jede der Zeigervariablen onext, lnext, sym, orig und "left", die in 6A gezeigt sind, so festgelegt, dass kein Widerspruch in benachbarten dreieckigen Patches besteht.
  • Phase 4: Nachverarbeitung
  • Diese Nachverarbeitung wird nach jedem Zyklus eines Vereinigungsprozesses ausgeführt. Diese schließt die folgenden drei Stufen ein:
    • (1) Ändern der Farben der Randkanten von conLeft und conRight nach Vereinigen von VIOLETT in ROT;
    • (2) Auswählen der Maximumkante "edge" und der Minimumkante "edgemin" der vereinigten konvexen Hülse in der X-Achsenrichtung; und
    • (3) Auswählen des Maximumvertex "maxX" und des Minimumvertex minX der vereinigten konvexen Hülse in der X-Achsenrichtung.
  • Beim Schritt (2) muß der Tatsache Beachtung geschenkt werden, dass die Farbe der ausgewählten Kante möglicherweise ROT ist. In diesem Fall wird die Kante mit der Farbe BLAU im Uhrzeigersinn oder Gegenuhrzeigersinn mit der ausgewählten Kante als dem Anfangswert herausgesucht und als Maximumkante "edge" und Minimumkante "edgemin" festgelegt. Der Schritt (3) ist für den Sicherungsprozess notwendig, der später erläutert wird.
  • (h) Wurzel von O(N·log N)
  • Falls angenommen wird, dass die Anzahl von Vertices von conLeft n1 ist und die Anzahl von Vertices von conRight n2 ist, ist die Berechnungslast 0 beim Vereinigungsprozess (g) O(n1 + n2). Falls angenommen wird, dass die Berechnungszeit für einen Satz mit der Gesamtzahl N von Vertices zum Erzeugen einer konvexen Hülse T(N) ist, wird dementsprechend die folgende Rekursionsformel erhalten: T (N) = 2T (N/2) + O(N)
  • Diese Formel wird gelöst als T(N) = O(N·log N).
  • (i) Zufallsabweichungsverfahren
  • In dem oben beschriebenen Algorithmus zum Erzeugen einer konvexen Hülse gibt es Fälle, in denen nicht weniger als vier Vertices auf der gleichen Ebene oder nicht weniger als drei Vertices auf der gleichen Linie liegen. In solchen Fällen ist eine Beurteilung eines Zweiges oft schwierig. Obwohl zum Beispiel eine Funktion ConvexJudge2Dim( ) zum Beurteilen, ob ein Vertex oberhalb oder unterhalb der geraden Linie ist, die zwei Vertices kombiniert, oder eine Funktion ConvexJudge3Dim( ) zum Beurteilen, ob ein Vertex oberhalb oder unterhalb der Ebene liegt, die durch drei Vertices gebildet wird, in verschiedenen Punkten verwendet wird, kann eine Beurteilung in den Fällen mehrdeutig werden, in denen nicht weniger als vier Vertices auf der gleichen Ebene liegen oder nicht weniger als drei Vertices auf der gleichen Linie liegen, was eine Unendlich-Schleife im Algorithmus verursachen kann.
  • Um diesen Zustand zu vermeiden, werden winzige Zufallsabweichungen "random( )" zu den Koordinatenwerten v(0), v(1), v(2) der jeweiligen Vertices addiert. Konkreter werden die dreidimensionalen Vektorelemente dv in der in 7 definierten Klasse "Vertex" wie folgt festgelegt:
    dv(0) = v(0);
    dv(1) = v(1) + random( );
    dv(2) = v(2) + random( ).
  • Mit anderen Worten, das X-Achsenelement wird gelassen wie es ist, und Abweichungen werden zu den Werten der Y-Koordinate und der Z-Koordinate addiert. Denn die Vertices sind bezüglich der X-Achse auf der Basis von v(0) sortiert, so dass das X-Achsenelement unveränderlich gehalten wird.
  • Der Prozess zum Addieren einer Zufallsabweichung zu jedem Vertex wird im Prozess zum Erzeugen einer eindimensionalen konvexen Hülse durch Verwenden der Funktion MakeConvex1Dim(con) zum Erzeugen einer in 9 gezeigten eindimensionalen konvexen Hülse ausgeführt.
  • (j) Sicherungsprozess
  • Im Einhüllungsprozess im Algorithmus zum Erzeugen einer konvexen Hülse kehrt eine Linie, die von den Vertices utop, vtop von Upper Bridge aus beginnt, um ein dreieckiges Patch zu erzeugen, manchmal nicht zu diesen Vertices zurück, sondern bildet eine Unendlich-Schleife. Der Grund ist der gleiche wie der in (i) beschriebene; aber die zu jedem Vertex addierte Zufallsabweichung ist nicht immer effektiv.
  • In einer Unendlich-Schleife im Einhüllungsprozess wird eine kleine Schleife in der Mitte des Einhüllungsprozesses gebildet und nimmt das Muster sich wiederholender Vertices an, die von utop oder vtop verschieden sind. Es ist möglich, durch Hashing zu beurteilen, ob ein anderer Vertex als utop oder vtop nicht weniger als zweimal ausgewählt wird oder nicht. Daher verlässt zu dem Zeitpunkt, wenn eine kleine Schleife erzeugt wird, der Prozess die Hauptschleife im Einhüllungsprozess und geht zum in 22 gezeigten Sicherungsprozess über.
  • In diesem Prozess werden conLeft→vent und conRight→vent miteinander verglichen, wie in 22 gezeigt ist, wird die konvexe Hülse, die eine kleinere Zahl Vertices hat, zerlegt, und die Vertices der zerlegten konvexen Hülse werden zu der anderen konvexen Hülse nacheinander addiert. Im Prozess eines Addierens der Vertices wird jeder Vertex als eine aus einem Vertex bestehende konvexe Hülse betrachtet, und der Vereinigungsprozess wird wiederholt. Wenn die Vertices vereinigt werden, werden sie in einer aufsteigenden Reihenfolge eines Koordinatenwertes vereinigt, falls eine konvexe Hülse conRight→vent zerlegt wird, und in ei ner absteigenden Reihenfolge eines Koordinatenwertes, falls eine konvexe Hülse conLeft→vent zerlegt wird.
  • Da ein Vertex stabil ist, wird in diesem Prozess eine Erzeugung einer Unendlich-Schleife in den meisten Fällen vermieden, und ein sicheres Vereinigen einer konvexen Hülse wird ermöglicht. Ist eine vereinigte konvexe Hülse einmal erzeugt, kehrt der Prozess zum gewöhnlichen Vereinigungsprozess zurück, der fortgesetzt wird, bis im Einhüllungsprozess wieder eine Unendlich-Schleife erzeugt wird. Dementsprechend ist es möglich, eine Zunahme der Teilhabe an der Berechnungslast im Sicherungsprozess auf das Minimum zu begrenzen.
  • (C) Vorverarbeitung zur Interferenzprüfung
  • (Erzeugung einer linearen Liste nahegelegener Punkte)
  • Diese Vorverarbeitung ist eine Vorverarbeitung, um sukzessiv nach den Punkten einer engsten Annäherung im Interferenzprüfprozess für konvexe Polyeder zu suchen. Die Vorverarbeitung steigert die Geschwindigkeit der sukzessiven Suche außerordentlich. Die Vorverarbeitung wird im allgemeinen nach der Erzeugung einer konvexen Hülse, wie in 5 gezeigt, ausgeführt.
  • Die lineare Liste nahegelegener Punkte ist eine Datenstruktur, die durch Verknüpfen der Vertices, die ein CG-Modell bilden, mit den anderen Vertices erhalten wird, die damit über die jeweiligen Kanten verbunden sind. Jeder eine konvexe Hülse bildender Vertex wird sukzessiv in der Richtung "next" verknüpft, und die Vertices in dessen Umgebung werden in der Richtung "branch" verknüpft.
  • (a) Beispiel einer linearen Liste nahegelegener Punkte
  • 23 zeigt ein Beispiel einer linearen Liste nahegelegener Punkte eines rechteckigen Parallelepipeds. Wie in 23 gezeigt ist, hat die lineare Liste nahegelegener Punkte zwei Richtungen, nämlich die Richtung "next", in der alle Vertices, die eine konvexe Hülse bilden, sukzessiv angeordnet sind, und die Richtung "branch", in der mit jedem interessierenden Vertex über einzelne Polygonkanten verbundene nahegelegene Punkte sukzessiv vom interessierenden Vertex aus angeordnet sind. Am Beginn der Richtung "branch" ist der Vertex per se des Zweigs plaziert.
  • (b) Algorithmus zum Erzeugen einer linearen Liste nahegelegener Punkte
  • 24 ist eine erläuternde Ansicht von Polygondaten jedes konvexen Elements eines Objekts von Interesse, und 25A bis 25D sind erläuternde Ansichten eines Algorithmus zum Erzeugen einer linearen Liste nahegelegener Punkte.
  • Falls angenommen wird, dass ein Objekt von Interesse durch einen Satz dreieckiger Polygone gebildet wird, wird die lineare Liste nahegelegener Punkte gemäß dem folgenden Ablauf erzeugt:
    • 1) Polygondaten eines konvexen Polyeders werden präpariert.
    • 2) Bezüglich jedes Elements von Polygondaten (pi, qi, ri) wird jeder Vertex in einer Liste L verknüpft. Die Richtung "next" ist die Richtung der linearen Liste bezüglich Vertices, und die Richtung "branch" ist die Richtung nahegelegener Punkte jedes Vertex. Das führende Element der Liste L ist der erste Vertex des ersten Polygons. Während des Verlaufs einer Erzeugung ist die Datenstruktur wie in 25A gezeigt. Konkreter wird die Liste wie folgt erzeugt:
    • 2-1) Das führende Element "top" der Liste L wird zugewiesen. Das heißt, der erste Vertex des ersten Polygons wird als "top" zugewiesen.
    • 2-2) Die folgenden Zuweisungen werden bezüglich Polygonen (pi, qi, ri) wiederholt.
    • (1) Falls (pi≠Lj für alle j gilt), wird ein neues Element pi dem Ende der Richtung "next" als Vertex Lj + 1 zugeordnet (siehe 25B). Als nächstes werden bezüglich der Richtung "branch" des Vertex Lj + 1 seine eigenen pi und qi, ri zugeordnet (siehe 25C).
    • (2) Falls (pi = Li bezüglich eines bestimmten Vertex Lj in der Richtung "next" gilt), werden qi und ri in der Richtung "branch" des Vertex Lj zugeordnet. Falls jedoch der gleiche Vertex schon als qi oder ri in der Richtung "branch" existiert, wird keine Zuordnung vorgenommen (siehe 25D).
    • (3) Die obige Verarbeitung 1), 2) wird bezüglich des Vertex qi ausgeführt. Es sollte besonders erwähnt werden, dass andere "branch"-Kandidaten als qi bezüglich des Vertex qi pi, ri sind.
    • (4) Die obige Verarbeitung 1), 2) wird bezüglich des Vertex ri ausgeführt. Es sollte besonders erwähnt werden, dass andere "branch"-Kandidaten als ri bezüglich des Vertex ri pi, qi sind.
    • 2-3) Die Verarbeitung von 2-2) wird für alle Polygonsätze Ui(pi, qi, ri) wiederholt.
  • Hier wird angenommen, dass die Klasse zum Erzeugen einer linearen Liste nahegelegener Punkte eine von der in 7 gezeigten verschiedene Struktur hat. Die in 7 gezeigte Klassenstruktur wird für keine andere Verarbeitung als die Erzeugung einer konvexen Hülse verwendet. Jedes Polygon, das ein Objekt von Interesse bedeckt, wird im Prozess zum Erzeugen einer konvexen Hülse schon automatisch in Dreiecke geteilt, so dass angenommen wird, dass die die Vertices kombinierenden Kanten schon erzeugt sind und die in 7 gezeigte Datenstruktur haben. Der Algorithmus zum Erzeugen einer linearen Liste nahegelegener Punkte ist ein reflexives Verfahren. Eine lineare Liste nahegelegener Punkte con→edge→orig, con→edge→sym→orig, con→edge→onext→sym→orig wird von der Maximumkante con→edge einer konvexen Hülse aus beginnend erzeugt, und nach jedem Vertex wird beginnend von der Kante con→edge→sym, con→edge→lnex→sym, con→edge→next aus beginnend reflexiv gesucht. Um zu verhindern, dass der gleiche Vertex zwei- oder mehrmals herausgesucht wird, wird jedes Mal Hashing ausgeführt, wenn ein Vertex herausgesucht wird.
  • (c) Format einer Dump-Datei
  • Das Format einer Dump-Datei hat eine in 26 gezeigte Struktur. In diesem Dateiformat sind die folgenden Elemente für ein Laden mit hoher Geschwindigkeit wesentlich.
    • 1) Es gibt ein Element der Gesamtzahl ("count" (Zählung)) von Vertices zum Erzeugen einer konvexen Hülse.
    • 2) Jeder Vertex ist numeriert.
    • 3) Es gibt ein Element, welches für jeden Vertex die Anzahl ("bcount") eines nahegelegenen Punktes des Vertex definiert.
    • 4) Es gibt ein Element, welches die Koordinaten jedes Vertex definiert.
  • (d) Verfahren zum Laden aus einer Dump-Datei
    • 1) Die Gesamtzahl ("count") von Vertices einer konvexen Hülse wird gelesen, und ein Array mit der "count"-Dimension, das jeden Vertex unterbringt, wird erzeugt.
    • 2) Jeder Vertex der konvexen Hülse wird in dem Array plaziert, und eine die Vertices in der Richtung "next" verbindende lineare Liste wird erzeugt. Falls zum Beispiel angenommen wird, dass das einen Vertex unterbringende Array V[N1] ist, werden V[0], V[1], ... in der Richtung "next" sukzessiv verbunden, um die lineare Liste zu erzeugen.
    • 3) Für jeden Vertex der konvexen Hülse wird eine Liste nahegelegener Punkte in der Richtung "branch" mit Hilfe der Anzahl nahegelegener Punkte (die Position im Array ist bestimmt) der Richtung "branch" erzeugt. Falls zum Beispiel angenommen wird, dass das alle Vertices unterbringende Array der konvexen Hülse V[N1] ist, werden V[0], V[9], V[1], V[7] und V[8] in einer linearen Datei in der Richtung "branch" des Vertex V[0] miteinander verbunden, falls die Zahlen von "branch" des Vertex V[0] (0, 9, 1, 7, 8) sind.
  • Gemäß dem oben beschriebenen Ladeverfahren wird ein Einlesen in die gleiche Datei insgesamt zweimal durchgeführt (1), 2) das erste Mal und 3) das zweite Mal). Da in den meisten Fällen die Anzahl von Zweigen jedes Vertex kleiner als einige Dutzend gehalten wird, ist die gesamte Ladezeit O(N) (N ist die Gesamtzahl von Vertices der konvexen Hülse). Auf die Datei für eine konvexe Hülse mit der in 26 gezeigten Struktur wird als "HL-Datei" im folgenden verwiesen.
  • (D) Erste Interferenzprüfung für ein nicht-konvexes Polyeder
  • Wenn konvexe Hülsen nicht-konvexer Polyeder und eine lineare Liste nahegelegener Punkte jeder konvexen Hülse durch die oben beschriebene Vorverarbeitung erzeugt werden, wird die Interferenz zwischen den konvexen Hülsen geprüft, indem das Gilbert-Verfahren übernommen wird, welches in der japanischen Patentanmeldung Nr. 209008/1994 (USP Anmeldungsnummer 08/304,532) vorgeschlagen ist. Falls es eine Interferenz zwischen den konvexen Hülsen gibt, wird jede konvexe Hülse zerlegt, und die Interferenz zwischen das nicht-konvexe Polyeder bildenden konvexen Polyedern wird gemäß einem Blasenkollisionsverfahren geprüft, welches später beschrieben wird. In der Interferenzprüfung für die konvexen Hülsen werden die Vertices, welche sich den Punkten einer engsten Annäherung annähern, die schon erhalten wurden, aus der linearen Liste nahegelegener Punkte extrahiert, und das Gilbert-Verfahren wird auf die Interferenzprüfung für die erhaltenen Vertices angewendet, um nach einer vorbestimmten Zeit nach den Punkten einer engsten Annäherung zu suchen. Auf diese Weise ist es möglich, die für eine Interferenzprüfung erforderliche Zeit auf nicht mehr als eine konstante Zeit zu begrenzen, die nicht von der Zahl von Polygonen abhängt, die das konvexe Polyeder bilden.
  • (E) Vorverarbeitung zur Interferenzprüfung gemäß Blasenkollisionsverfahren
  • Wenn konvexe Polyeder zu interferieren beginnen, wird ein Blasenkollisionsverfahren übernommen, um die Interferenz zwischen den nicht-konvexen Polyedern zu prüfen. Im Blasenkollisionsverfahren wird jedes Polygon, das ein nicht-konvexes Polyeder bildet, mit einer Kombination mehrerer Sphären bedeckt, von denen jede eine Mitte auf dem entsprechenden Polygon hat, und die diese Sphären einhüllenden Sphären werden hierarchisch erzeugt. Auf diese Weise ist es möglich, die Interferenz zwischen den nicht-konvexen Polygonen zu prüfen, indem die Interferenz zwischen den Sphären mit hoher Geschwindigkeit hierarchisch geprüft wird, um nach der Kombination von Polygonen zu suchen, die sich am engsten annähern, und die Interferenz zwischen den Polygonen geprüft wird.
  • Um ein solches Blasenkollisionsverfahren zu übernehmen, wird eine Vorverarbeitung durchgeführt, um jedes ein nicht-konvexes Polyeder bildende Polygon mit einer Kombination mehrerer Sphären zu bedecken, von denen jede eine Mitte auf dem entsprechenden Polygon hat, und diese Sphären einhüllenden Sphären hierarchisch anzuordnen. Auf einen Baum, der ein Satz dieser hierarchisch angeordneten Sphären ist, wird im folgenden als "Sphärenbaum" verwiesen.
  • Der Sphärenbaum wird durch ein Divide-and-Conquer-Verfahren erzeugt, und dieser Prozess wird in einer Zeitspanne von O(N·log N) bezüglich eines CG-Modells beendet, das aus N Polygonen besteht.
  • Dieser Prozess ist von dem Prozess zum Erzeugen eines Sphärenbaums durch das Quinlan-Verfahren insofern verschieden, als, obgleich das letztgenannte einer Abtastumwandlung ähnlich ist, bei der vorliegenden Erfindung Sphären mit dem Wert einer Skala S als Parameter effizient erzeugt werden, wobei die Anzahl von mit den Sphären eingehüllten Polygonen berücksichtigt wird.
  • (a) Erzeugung von Leaf-Sphären
  • Ein nicht-konvexes Polyeder als ein Objekt einer Interferenzprüfung wird mit einem Satz dreieckiger Polygone bedeckt. Zu dieser Zeit wird eine Basissphäre, deren Mitte auf einem dreieckigen Polygon liegt und die auf der untersten Seite des Satzes von Sphären liegt, die das Objekt bedecken, "Leaf-Sphäre" genannt. 27 zeigt ein Beispiel von Leaf-Sphären. Leaf-Sphären werden in der folgenden Weise erzeugt.
  • 1) Anfangseinstellung
  • Eingabedaten sind die Koordinaten der Vertices jedes dreieckigen Polygons und ein Skalenparameter S. Ein Verfah ren zum Festlegen des Skalenparameters S wird später beschrieben. Wie in 28 gezeigt ist, wird angenommen, dass, wenn die Längen d0 = |p1 – p0|, d1 = |p2 – p1|, d2 = |p0 – p2| der Seiten auf der Basis der Koordinaten der Vertices des dreieckigen Polygons berechnet werden, die Beziehung d0 ≥ d1 ≥ d2 gilt. Falls diese Beziehung nicht erfüllt ist, werden die Vertexzahlen gegeneinander ausgetauscht.
  • Ein Einheitsvektor e0 auf der Seite p0p1 wird auf e0 = (p1 – P0)/d0 festgelegt.
  • Die Höhe h eines dreieckigen Polygons wird gemäß der Formel h = √{d2 2 – ((p1 – P0)·(p0 – p2)/d0)2} berechnet.
  • 2) Hauptverarbeitung
    • 2-1) Leaf-Sphären werden entlang der Seite p0p1 erzeugt.
    • N0 = [d0/s] wird berechnet, und falls N0 = 0 ist, wird der Radius r0 auf r0 = d0/2 festgelegt. Falls N0 ≠ 0 ist, wird der Radius r0 auf r0 = d0/(2·N0) festgelegt. Zu dieser Zeit werden dementsprechend die Leaf-Sphären mit dem Radius r0 entlang der Seite p0p1 in einem Array angeordnet. Hierein bedeutet [a] eine maximale ganze Zahl, die kleiner als a ist.
    • 2-2) r0 ist größer als h, der gesamte Teil des dreiekkigen Polygons wird mit den Leaf-Sphären auf der Seite p0p1 (siehe 29) bedeckt, und die Verarbeitung wird beendet.
    • 2-3) Falls (r0 ≤ h) ist, werden die Einheitsvektoren e1 = (p2 – p1)/d1, e2 = (p0 – p2)/d2, und N1 = [d1/s], N2 = [d2/s] berechnet, und Leaf-Sphären werden entlang den Seiten p1p2 und p2p0 in der gleichen Weise wie entlang der Seite p0p1 erzeugt.
    • 2-4) Das Innere des dreieckigen Polygons wird dann mit Leaf-Sphären bedeckt. Wie in 30 gezeigt ist, wird die Basis des dreieckigen Polygons um den Durchmesser diam0 = 2 r0 einer Leaf-Sphäre erhöht, und die Mitten von Leaf-Sphären werden entlang der erhöhten Basis in der gleichen Weise wie entlang der Seite p0p1 angeordnet. Wenn der Radi us r der Sphäre bestimmt ist, wird der zur aktuellen Zeit berechnete Radius r1 mit dem Radius r1-1 verglichen, der zum vorherigen Zeitpunkt berechnet wurde, und der größere wird ausgewählt. Der Radius r wird nämlich gemäß r = max(ri-1, ri) aktualisiert. Auf diese Weise ist es möglich, den Raum zwischen den vertikal benachbarten Leaf-Sphären zu reduzieren, wenn sie übereinandergelegt werden.
    • 2-5) Die Verarbeitung 2-3), 2-4) wird wiederholt, bis die Höhe hi = hi-1 – diami-1 des Dreiecks mit der erhöhten Basis die Beziehung hi < diami-1/2 erfüllt.
  • (b) Verfahren zum Erzeugen eines Sphärenbaums durch das Divide-and-Conquer-Verfahren
  • Der Sphärenbaum ist eine Datenstruktur, in der Sphären, die Leaf-Sphären einhüllen, als Elemente in Form eines Baums hierarchisch angeordnet sind.
  • Ein Binärbaum wird in der vorliegenden Erfindung übernommen. Denn es ist sehr wahrscheinlich, dass eine Binärstruktur bezüglich eines beliebigen nicht-konvexen Polyeders am besten ausgeglichen wird.
  • 31 zeigt die Datenstruktur zum Erzeugen eines Sphärenbaums, und 32 ist dessen Flussdiagramm. Eine Sphäre als Basis des Sphärenbaums, die eine Mitte auf einem dreieckigen Polygon aufweist, wird durch "Leaf" repräsentiert, und ein Satz von "Leaf"s wird durch "Leaves" repräsentiert. Ein auf jedem Knoten des Sphärenbaums angeordnetes Sphärenelement wird durch "Sphere" repräsentiert. Die Mitte jedes "Leaf" und "Sphere" wird in "center" gespeichert, und deren Radius wird in "r" gespeichert. "Plane*plane" als ein Element von "Leaf" zeigt auf das dreiekkige Polygon, auf dem die Mitte von "Leaf", "Sphere" existiert. Falls angenommen wird, dass die Mitte des "Leaf" – Elements i, welches mit "Leaf*leaves" verbunden ist, (xi, yi, zi) ist, werden die folgenden Werte in Elemente "max", "min" von "Leaves" eingegeben:
    max = (MAXi{xi}, MAXi{yi}, MAXi{zi})
    min = (MINi{xi}, MINi{yi}, MIN{zi})
  • Die Anzahl von "Leaf"-Elementen, die mit "Leaf*leaves" verbunden sind, wird in "leafcnt" eingegeben, und der Schwerpunkt, der durch Teilen der Summe der Koordinaten der Mitten von "Leaf"-Elementen durch die Anzahl von Elementen erhalten wird, wird in avcenter eingegeben. Die Elemente "left", "right" von "Sphere" repräsentieren einen Binärbaum, und "Leaves" zeigt auf einen Satz von unterhalb dieses Grads enthaltenen "Leaf"-Elementen.
  • Der Algorithmus zum Erzeugen einer Sphäre wird im folgenden schematisch beschrieben.
    • 1) Eine Polygoninformation, welche in der Richtung "next" von "Planes" linear verknüpft ist, wird eingegeben, und für jedes Polygon wird ein Satz "Leaf"-Elemente erzeugt. Alle Sätze von "Leaf"-Elementen werden für alle Sätze Polygone linear verknüpft (32, Schritt 2001).
    • 2) Der lineare Satz leaves -> leaves von "Leaf" wird eingegeben, und durch ein Divide-and-Conquer-Verfahren wird ein Sphärenbaum erzeugt.
    • 2-1) Wenn die Anzahl von "Leaf"-Elementen 0 oder 1 ist, wird eine Verarbeitung bei Schritten 2002 und 2003 ausgeführt.
    • 2-2) Wenn die Anzahl von "Leaf"-Elementen nicht geringer als 2 ist, wird der Speicher des Binärbaums gesichert (Schritt 2004).
    • 2-3) Um die Sätze von "Leaf"-Elementen leaves->leaves zu teilen, werden max und min von leaves->leaves berechnet (Schritt 2005), und eine Beurteilung wird diesbezüglich vorgenommen, in welcher axialen Richtung von der X-Achsenrichtung, Y-Achsenrichtung und Z-Achsenrichtung der Satz von "Leaf"-Elementen sich am meisten erstreckt, wodurch die axiale Richtung, in der die Anzahl von "Leaf"-Elementen maximal ist, erhalten wird. Der Mittenwert von "Leaf"-Elementen in den erhaltenden axialen Richtungen wird berechnet (Schritt 2006).
    • 2-4) Der Satz von "Leaf"-Elementen wird in der bei 2-3) erhaltenen axialen Richtung mit dem Mittenwert als der Grenze geteilt (Schritt 2007).
    • 2-5) Ein Divide-and-Conquer-Verfahren wird auf jeden der geteilten Sätze von "Leaf"-Elementen reflexiv angewendet (Schritt 2008).
    • 2-6) Der Schwerpunkt "avcenter" und die Zahl "leafcnt" des Vorgängers "Spheres" werden auf der Basis des Schwerpunkts "avcenter" und der Anzahl "leafcnt" von Elementen "left" und "right" erhalten, die reflexiv erhalten werden (Schritt 2009).
    • 2-7) "left" und "right" werden vereinigt, um einen Vorgänger "Sphere" zu erzeugen (Schritt 2010).
  • Wenn der Vorgänger "Sphere" erzeugt wird, sind zwei Verfahren als Verfahren zum Erhalten des Radius und dessen Mitte vorbereitet. Ein erstes Verfahren ist ein Verfahren zum Erzeugen der minimalen Sphäre, welche "left" und "right" einer Nachfolgersphäre einhüllt, und ein zweites Verfahren ist ein Verfahren zum Erzeugen einer minimalen Sphäre, die einen Satz von "Leaf"-Elementen einhüllt, die in niedrigeren Graden enthalten sind. Zwei Sphären werden durch die obigen beiden Verfahren erhalten, und die Sphäre mit einem kleineren Radius wird als der Vorgänger "Sphere" übernommen.
  • 33 zeigt ein Beispiel eines Sphärenbaums für ein rechteckiges Parallelepiped.
  • (c) Skalenparameter S
  • Die Anzahl von ein Objekt einer Interferenzprüfung bedeckenden Leaf-Sphären hängt stark von der Anzahl N von Polygonen ab, die das Objekt bedecken. Wenn N adäquat groß ist, ist es nicht notwendig, ein Polygon mit kleinen Sphären zu bedecken. Wenn auf der anderen Seite N klein ist, ist es notwendig, die Anzahl von Leaf-Sphären geeignet zu erhöhen, um die Bedeckung durch die Sphären näher an das Objekt annähern zu lassen. Die Anzahl von Polygonen als die Grenze beträgt etwa 100. Der Skalenparameter S wird gemäß dem folgenden Algorithmus berechnet.
    • 1) Der Radius der Sphäre, die eine konvexe Hülse einhüllt, wird durch Berechnen von max = (MAX1{x1}, MAX1{y1}, MAX1{z1}) min = (MIN1{x1}, MIN1{y1}, MIN1{z1}) bezüglich eines Satzes Vertices erhalten, welche die konvexe Hülse bilden.
    • 2) Wenn die Anzahl von Polygonen als ein Objekt einer Interferenzprüfung kleiner als ein vorbestimmter Schwellenwert PLANELIMIT ist, gilt S = R/SPHERESCALE, worin SPHERESCALE eine vorbestimmte Skalenkonstante ist. In anderen Fällen gilt S = R.
  • Die typischen Werte von PLANELIMIT und SPHERESCALE sind PLANELIMIT = 100 und SPHERESCALE = 8.
  • (F) Blasenkollisionsverfahren in einem Interferenzprüfprozess für nicht-konvexe Polyeder
  • Um die Interferenz zwischen nicht-konvexen Polyedern mit hoher Geschwindigkeit zu prüfen, wird ein Sphärenbaum für jedes nicht-konvexe Polyeder erzeugt, und der Baum wird gemäß einem Tiefensuchverfahren geprüft, um nach dem Paar Sphären zu suchen, die sich am engsten annähern. Das Gilbert-Verfahren wird auf die Kombination der Polygone angewendet, auf denen die Mitten der herausgesuchten Sphären liegen, um den Punkt einer engsten Annäherung der beiden nicht-konvexen Polyeder zu berechnen.
  • Dieses Verfahren unterscheidet sich vom Quinlan-Verfahren im Berechnungsverfahren der Distanz zwischen Sphären. Wenn die Distanz zwischen Sphären erhalten wird, wird in diesem Verfahren die Definition der Distanz zwischen Sphären gemäß dem Grad oder der Tiefe des Sphärenbaums geändert, in welchem die Sphären existieren. Folglich ist es möglich, die Anzahl von Polygonpaaren zu reduzieren, die schließlich zu prüfen sind, obgleich es ein Problem eines herkömmlichen Blasenkollisionsverfahrens ist, dass die Zahl von schließlich zu prüfenden Polygonpaaren groß ist.
  • (a) Verfahren zum Suchen nach Punkten einer engsten Annäherung durch ein Tiefensuchverfahren
  • Die Punkte einer engsten Annäherung von zwei nicht-konvexen Polyedern werden gemäß dem folgenden Tiefensuchal gorithmus erhalten. 34 und 35 zeigen die Basisfunktion einer Blasenkollisionsprüfung in einem Blasenkollisionsverfahren.
    • 1) Der Anfangswert cq->dist der Distanz zwischen zwei Objekten wird auf Unendlich festgelegt. Das Symbol cq repräsentiert eine Variable einer Umgebungsklasse in einer Interferenzprüfung. Die Einzelheiten werden später beschrieben.
    • 2) Die Distanz zwischen den aktuellen Sphären wird erhalten. Falls der Wert nicht mehr als cq->dist ist, werden die aktuellen Sphären in der vertikalen Richtung gemäß der folgenden Regel zerlegt (Schritt 2101).
    • 2-1) Falls keine der aktuellen Sphären eine Leaf-Sphäre ist, wird die Sphäre mit einem größeren Durchmesser zerlegt (Schritte 2102, 2105).
    • 2-2) Die Distanz zwischen einer der beiden Nachfolgersphären, die als Ergebnis einer Zerlegung erhalten wurden, und der Sphäre, die nicht zerlegt ist, und die Distanz zwischen der anderen Nachfolgersphäre und der letztgenannten Sphäre werden erhalten, und das Paar Sphären, welche näher sind, wird zuerst gesucht (Schritte 2103, 2104).
    • 2-3) Falls eine der aktuellen Sphären eine Leaf-Sphäre ist, wird die andere Sphäre zerlegt, und die Verarbeitung 2-2) wird ausgeführt (Schritte 2106, 2107).
    • 3) Die beiden aktuellen Sphären sind Leaf-Sphären (Schritt 2108), das Gilbert-Verfahren wird auf das Paar dreieckige Polygone angewendet, worauf die Leaf-Sphären liegen, und die Distanz dist zwischen den dreieckigen Polygonpaaren wird erhalten (Schritt 2110).
    • 4) Falls die erhaltende Distanz dist kleiner als cq->dist ist, wird der Wert cq->dist aktualisiert, und die obige Verarbeitung wird reflexiv wiederholt (Schritt 2111).
  • In diesem Algorithmus soll in der Verarbeitung 3) eine Interferenzprüfung für das gleiche Paar dreieckiger Polygone mehrere Male in der Verarbeitung 3) ausgeführt werden. Aus diesem Grund wird für ein Polygonpaar Hashing ausge führt, wodurch eine unnötige Interferenzprüfung verhindert wird (Schritt 2019).
  • (b) Distanz zwischen Sphären
  • Um die Effizienz eines Blasenkollisionsverfahren zu steigern, ist es notwendig, den Wert cq->dist sobald wie möglich zu reduzieren und die Anzahl von Suchmalen gemäß einem Tiefensuchverfahren zu reduzieren. Um die Anzahl von Suchmalen zu reduzieren, wird die Distanz zwischen den Sphären wie folgt definiert.
    • 1) Die Distanz zwischen Zwischensphären ist der Wert, der durch Subtrahieren der Radien beider Sphären von der Distanz zwischen ihren Mitten erhalten wird ((1) in 36).
    • 2) Die Distanz zwischen einer Zwischensphäre und einer Leaf-Sphäre ist der Wert, der erhalten wird, indem der Radius der Zwischensphäre von der Distanz zwischen ihren Mitten subtrahiert wird ((2) (3) in 36).
    • 3) Die Distanz zwischen Leaf-Sphären ist die Distanz zwischen ihren Mitten ((4) in 36).
  • Diese Definition ermöglicht, dass die Tiefensuche in einem anderen Knoten des Sphärenbaums reduziert wird, und verhindert, dass das gleiche Polygonpaar beim Schritt 2110 in 35 mehrere Male geprüft wird.
  • Diese Definition hat allerdings ein Problem. Und zwar in dem Fall, wenn zwei Objekte an mehreren Punkten miteinander in Kontakt kommen. In diesem Fall besteht, da der Wert cq-> dist wegen eines Kontaktpunkts ungefähr 0 wird, die Möglichkeit, dass die Sphäre, die diesen Kontaktpunkt enthält, beim Suchen eines anderen Kontaktpunktes unmarkiert passiert wird. Um dieses Problem zu lösen, wird die folgende Definition hinzugefügt.
    • 4) Falls der Wert cq->dist kleiner als ein vorbestimmter sehr kleiner Wert EPS ist, wird die Distanz zwischen Sphären wie 1) definiert. Der sehr kleine Wert EPS ist typischerweise 1/104.
  • (c) Berechnungslast
  • Die Berechnungslast in einem Blasenkollisionsverfahren ist im effizientesten Fall O(log N0 + log N1) (N0 und N1 sind jeweils die Gesamtzahlen von Leaf-Sphären, die die jeweiligen Objekte bedecken). Der Bedeckungsgrad, d.h. die Anzahl von Leaf-Sphären, darf nicht zu groß oder zu klein sein. Falls er zu klein ist, dauert es lange, um den Wert cq->dist zu reduzieren, und die Zahl von Suchmalen steigt. Falls er zu groß ist, wird die Tiefe einer Suche erhöht. Um die Effizienz realistisch zu steigern, wird, wenn die Zahl von das Objekt einer Interferenzprüfung repräsentierenden Polygonen größer ist, ein Polygon mit einer Leaf-Sphäre bedeckt, und die Zahl von Leaf-Sphären wird erhöht, wenn die Zahl von Polygonen kleiner wird. Konkreter wird der Bedeckungsgrad gemäß dem oben beschriebenen Skalenparameter S eingestellt.
  • Ein anderes Verfahren zum Reduzieren der Berechnungslast ist ein Verfahren zum Einführen eines relativen Fehlerparameters cq->alpha. Wie bei Schritt 2111 in 35 gezeigt ist, wird, wenn der Parameter cq->alpha eingeführt wird, der aktualisierte Wert von cq->dist so eingestellt, dass er kleiner als die aktuell erhaltene Distanz dist zwischen den Polygonen ist, so dass die Suchbedingungen in einem anderen Knoten strenger werden. Der Wert cq->alpha ist eine reelle Zahl zwischen 0 und 1 und hat einen Effekt, einen Fehler in der erhaltenen Distanz dist einzuführen. Falls angenommen wird, dass der wahre Wert zwischen den Punkten einer engsten Annäherung d ist, gilt die Beziehung dist ≥ d ≥ dist·(1-cq->alpha).
  • Der Effekt des Parameters für einen Relativfehler ist groß, wenn die Objekte einer Untersuchung voneinander sehr beabstandet sind, und der Effekt wird kleiner, wenn die Objekte einander nahekommen. Wenn die Objekte miteinander in Kontakt kommen, ist der Effekt der gleiche wie wenn cq->alpha = 0 gilt.
  • (G) Vereinigung eines Gilbert-Verfahrens vom sukzessiven Typ für konvexe Hülsen mit einem Blasenkollisionsverfahren für nicht-konvexe Polyeder
  • Um die Interferenz zwischen nicht-konvexen Polyedern mit möglichst wenig Vergeudung zu prüfen, wird, wenn nicht-konvexe Polyeder voneinander adäquat beabstandet sind, eine jedes nicht-konvexe Polyeder einhüllende konvexe Hülse erzeugt, und das Gilbert-Verfahren vom sukzessiven Typ wird übernommen, um die Interferenz zwischen den konvexen Hülsen zu prüfen. Wenn die konvexen Hülsen zu interferieren beginnen, ist das Gilbert-Verfahren vom sukzessiven Typ automatisch zu einem Blasenkollisionsverfahren umgeschaltet. Die Umschaltzeitsteuerung wird durch die Distanz zwischen den konvexen Hülsen bestimmt.
  • (a) Datenstruktur für eine Interferenzprüfung
  • 37, 38 und 39 zeigen den Hauptpart der Datenstruktur für eine Interferenzprüfung, die zum Ausdrücken des Algorithmus zur Interferenzprüfung notwendig ist.
  • Das Symbol CollisionQue repräsentiert eine Klasse, die eine Umgebung für eine Interferenzprüfung definiert, ColQue eine Klasse, die ein Objekt einer Interferenzprüfung ausdrückt, Prims eine Klasse, die einen das Objekt bildenden Vertex ausdrückt, ConvesHul eine Klasse, die eine aus der HL-Datei erzeugte konvexe Hülse ausdrückt, und MetaLeaf, MetaLeaves und Metasphere sind Klassen, die auf einen Metabaum bezogen sind, der später erläutert wird.
  • Die beiden Objekte einer Interferenzprüfung werden in zwei Gruppen geteilt, von denen jede durch ColQue list 1 bzw. ColQue list 2 ausgedrückt wird. Diese ColQue-Listen sind über den Zeiger "next" der Klasse ColQue linear verbunden, und deren führende Elemente sind mit "next", "next2" der Umgebungsklasse CollisionQue verbunden. Durch diesen Algorithmus wird nach den Punkten, die sich am engsten annähern, in der ColQue-Liste 1 und der ColQue-Liste 2 gesucht. Falls z.B. jede Verknüpfung eines Roboters 1 und jede Verknüpfung eines Roboters 2 als die ColQue-Liste 1 bzw. ColQue-Liste 2 festgelegt sind, wird die Interferenz zwischen dem Roboter 1 und dem Roboter 2 geprüft, und eine Interferenzprüfung für jedes Paar Verknüpfungen des Roboters 1 und eine Interferenzprüfung für jedes Paar Verknüp fungen des Roboters 2 werden ignoriert. Falls angenommen wird, dass die Zahl von Verknüpfungen des Roboters 1 L1 und Zahl von Verknüpfungen des Roboters 2 L2 ist, sind L1 × L2 Interferenzprüfungen notwendig, um die Dinge einfach zu halten. Ein Verfahren zum Steigern der Geschwindigkeit einer Ausführung dieses Prozesses ist ein Verfahren, bei dem ein Metabaum verwendet wird, was später erläutert wird.
  • (b) Zusammenfassung des Gilbert-Verfahrens
  • Der Algorithmus zum Ausführen einer Interferenzprüfung für konvexe Polyeder gemäß einem linearen Berechnungsumfang bezüglich der Anzahl von Vertices ist das Gilbert-Verfahren. 40 zeigt die grundlegende Logik eines Verfahrens zum Berechnen der Punkte einer engsten Annäherung durch das Gilbert-Verfahren. Für Einzelheiten nehme man bitte Bezug auf die japanische Patent-Anmeldung Nr. 209008/1994 (Method of Searching for Points of Closest Approach and Preprocessing Thereto).
  • Im Gilbert-Verfahren wird ein Vektor ν0 erzeugt, indem die Schwerpunkte der Objekte von Interesse kombiniert werden. Die Kandidaten p0, q0 der Punkte einer engsten Annäherung werden erhalten, indem der maximale Wert bezüglich des inneren Produktes von –ν0 (und ν0) und jedes Vertex berechnet wird (40A). Der Vektor ν0 wird in einen Vektor ν1 geändert, der p0 und q0 kombiniert, und neue Kandidaten p1, q1 werden durch eine ähnliche Berechnung eines inneren Produktes erhalten (40B). Falls angenommen wird, dass der Vektor ν1 der Vektor einer engsten Annäherung zwischen einem Polygon, das durch einen Satz {pk} von Vertices erzeugt wird, und einem durch einen Satz {qk} von Vertices erzeugten Polygon ist, wird die obige Verarbeitung mehrere Male wiederholt und beendet. Schließlich werden auf jedem Objekt die Punkte einer engsten Annäherung und die Vektoren einer engsten Annäherung erhalten (40C). Da die Gestalt, welche {pk} oder {qk} erzeugt, ein Dreieck, eine Kante oder ein Vertex ist, wird die Distanz dazwischen einfach erhalten.
  • Wie oben beschrieben wurde, wird die Berechnungslast des Gilbert-Verfahrens durch die Berechnung eines inneren Produkts bezüglich jedes Vertex erzeugt, der ein Objekt einer Interferenzprüfung bildet. Daher ist die Berechnungsgrößenordnung O(n1 + n2) (n1, n2: die Zahl von Vertices jedes Objekts).
  • (c) Gilbert-Verfahren vom sukzessiven Typ
  • Wenn die Punkte einer engsten Annäherung sukzessiv erhalten werden, ist es möglich, die nächsten Punkte einer engsten Annäherung mit höherer Effizienz zu berechnen, indem die Informationen über die Punkte der nächsten Annäherung verwendet werden, die beim vorhergehenden Schritt erhalten wurden.
  • 41 zeigt schematisch die Algorithmen des Gilbert-Verfahrens vom sukzessiven Typ. Wie in (b) Zusammenfassung des Gilbert-Verfahrens erläutert ist, wird die Berechnung eines inneren Produkts bezüglich aller Punkte jedes Mal wiederholt. In dem Fall, in dem die Punkte einer engsten Annäherung sukzessiv verfolgt werden, erwartet man, dass die Punkte einer engsten Annäherung beim nächsten Schritt in der Umgebung der Punkte einer engsten Annäherung liegen, die im aktuellen Schritt erhalten werden. Daher ist die Berechnung eines inneren Produktes in der Umgebung der Punkte einer engsten Annäherung ausreichend. Um dies konkreter darzustellen, wird ein Summen-Satz nahegelegener Vertices bezüglich jedes der Sätze {pk} oder {qk} von Vertices erzeugt, die νfinal bilden (40), indem nach den nahegelegenen Vertices in der Richtung der Zeigervariable "branch" gesucht wird, und ein inneres Produkt wird bezüglich jedes Satzes nahegelegener Vertices berechnet. Beim Erzeugen des Summen-Satzes nahegelegener Vertices wird das Überlappen der gleichen Vertices durch Hashing vermieden.
  • Die Berechnungslast im Gilbert-Verfahren vom sukzessiven Typ ist zu der Anzahl von Elementen des Summen-Satzes nahegelegener Vertices proportional. Streng gesprochen hängt dieser Wert von der Zahl von Polygonen, die das Ob jekt ausdrücken, und dem Patching-Verfahren ab. Falls z.B. die Bodenfläche eines Konus oder einer Säule mit Polygonen in der Form sehr feiner Blütenblätter gepatched wird, ist die Anzahl von Elementen in dem Summen-Satz nahegelegener Vertices in der Umgebung der Mitte viel größer als die in einem anderen Bereich. In den meisten von dieser Ausnahme verschiedenen Fällen kann jedoch die Zahl von Elementen auf einen adäquat kleinen Wert (nicht mehr als 20 bis 30) begrenzt werden. Folglich kann man sagen, dass die Berechnungslast im Gilbert-Verfahren vom sukzessiven Typ ungeachtet eines Objekts einer Interferenzprüfung nicht mehr als ein vorbestimmter Wert ist.
  • Als ein Ergebnis einer groben Auswertung unter Verwendung einer Computermaschine mit 16 Mflops betrug die Berechnungslast 0,5 ms/Zyklus bezüglich nahezu jedes Objektes.
  • (d) Vereinigungsalgorithmus
  • 42 zeigt einen Ablauf eines Algorithmus zum Vereinigen des Gilbert-Verfahrens vom sukzessiven Typ und eines Blasenkollisionsverfahrens. Außerhalb der konvexen Hülsen wird eine Interferenzprüfung durch das Gilbert-Verfahren vom sukzessiven Typ ausgeführt (Schritt 3001). Falls es keine Interferenz gibt, ist die Antwort bei Schritt 3002 "Nein", und die Punkte einer engsten Annäherung sind erhalten (Schritt 3003). Wenn die konvexen Hülsen miteinander zu interferieren beginnen, ist die Antwort beim Schritt 3002 "Ja", und das Gilbert-Verfahren wird zu einem Blasenkollisionsverfahren umgeschaltet (Schritt 3004). Die Punkte einer engsten Annäherung werden durch das Blasenkollisionsverfahren erhalten (Schritt 3005). Danach wird die Distanz zwischen den Objekten lang, und die gemäß dem sukzessiven Gilbert-Verfahren berechnete Distanz wird größer als 0, und die Antwort bei Schritt 3002 ist "Nein". Zu dieser Zeit wird das Blasenkollisionsverfahren zum Gilbert-Verfahren vom sukzessiven Typ umgeschaltet, und die Punkte einer engsten Annäherung werden durch dieses Verfahren erhalten.
  • Das Problem in diesem Algorithmus ist, ob die Distanz 0 durch das sukzessive Gilbert-Verfahren sogar in dem Zustand, in dem ein Objekt das andere Objekt absorbiert, nachdem die Objekte miteinander zu interferieren beginnen, berechnet wird oder nicht. Es ist möglich, dieses Problem zu lösen, indem das dreidimensionale Gilbert-Verfahren auf das vierdimensionale Gilbert-Verfahren ausgedehnt wird.
  • (e) Vierdimensionales Gilbert-Verfahren
  • Es wird angenommen, dass im Fall eines Umschaltens von einem Verfahren einer sukzessiven Suche zwischen konvexen Hülsen zu einem Blasenkollisionsverfahren für nicht-konvexe Polyeder oder umgekehrt die Umschaltzeitsteuerung durch die Distanz bestimmt ist, die durch das Gilbert-Verfahren vom sukzessiven Typ für konvexe Hülsen berechnet wurde. Wenn die konvexen Hülsen miteinander zu interferieren beginnen, wird der Algorithmus zum Berechnen der Distanz vom dreidimensionalen Gilbert-Verfahren vom sukzessiven Typ zum (3 + Extra-Dim)-, nämlich vierdimensionalen Gilbert-Verfahren vom sukzessiven Typ umgeschaltet. Selbst wenn eine konvexe Hülse in die andere konvexe Hülse absorbiert wird, kann auf diese Weise der Vektor nahegelegener Vertices ohne Widerspruch berechnet werden.
  • 43 zeigt den oben beschriebenen Zustand in der (2 + Extra-Dim)-Dimension. Wie in (1) in 43 gezeigt ist, ist, wenn zwei konvexe Hülsen miteinander nicht interferiert sind, die Distanz zwischen den konvexen Hülsen durch eine zweidimensionale Distanz d definiert. Der Wert d wird durch das zweidimensionale Gilbert-Verfahren vom sukzessiven Typ berechnet. Wenn der Wert d kleiner als ein vorbestimmter sehr kleiner Wert wird, ist man der Ansicht, dass zwei konvexe Hülsen miteinander zu interferieren beginnen, und eine konvexe Hülse wird um ε in der Richtung von Extra-Dimension ((2), (3) in 43) erhöht. In diesem Zustand wird der Vektor nahegelegener Vertices durch das dreidimensionale Gilbert-Verfahren vom sukzessiven Typ berechnet. Zu dieser Zeit liegt der Vektor nahegelegener Vertices in der Richtung von Extra-Dimension, und die Komponente auf der X- Y-Ebene ist 0. Die Distanz d zwischen den beiden konvexen Hülsen ist daher konstant 0, so dass geurteilt wird, dass die beiden konvexen Hülsen miteinander interferieren. Wenn die Komponente der X-Y-Ebene irgendeinen anderen Wert als 0 annimmt, wird geurteilt, dass der Interferenzzustand der beiden konvexen Hülsen aufgehoben ist, und das Interferenzprüfverfahren wird von dem (2 + Extra-Dim), nämlich dem dreidimensionalen Gilbert-Verfahren vom sukzessiven Typ, zum zweidimensionalen Gilbert-Verfahren vom sukzessiven Typ umgeschaltet.
  • Der Wert ε zum Anheben einer konvexen Hülse in der Richtung von Extra-Dimension kann irgendein von 0 verschiedener Wert sein.
  • (f) Steigerung der Geschwindigkeit durch Metabaum
  • In einem Fall, in dem die Interferenz zwischen zwei Objekten, von denen jedes aus einem Satz nicht-konvexer Polyeder besteht, geprüft wird, um das Paar nicht-konvexer Polyeder zu suchen, die sich am nächsten annähern, wird ein Metabaum erzeugt, indem jedes nicht-konvexe Polyeder mit Sphären bedeckt und dann diese Sphären mit Einhüllungssphären hierarchisch eingehüllt werden. Statt jeweils eine Interferenz zwischen jedem Paar Polyeder zu prüfen, welche das jeweilige Objekt bilden, wird die Interferenz zwischen Einhüllungssphären auf der Basis des Metabaums durch ein Tiefensuchverfahren geprüft, um das Paar Sphären herauszusuchen, welche sich am engsten annähern. Indem das Gilbert-Verfahren vom sukzessiven Typ für die Interferenzprüfung zwischen den konvexen Hülsen verwendet wird, auf denen die Mitten der wiedergewonnen Sphären liegen, ist es möglich, die Punkte einer engsten Annäherung mit hoher Effizienz zu berechnen.
  • 44 zeigt einen Metabaum, der für Roboterarme RA1 und RA2 erzeugt wird und die Interferenz dazwischen prüft. Sphären entsprechend "Leaf spheres", welche einen Metabaum bilden, sind wie folgt definiert.
  • Die Vektoren max, min bezüglich jedes nicht-konvexen Polyeders, das ein Objekt einer Interferenzprüfung bildet, sind wie folgt definiert:
    max = (MAXi{xi}, MAXi{yi}, MAXi{zi})
    min = (MINi{xi}, MINi{yi}, MIN{zi})
    worin i auf jedem Vertex eines nicht-konvexen Polyeders läuft.
  • Zu dieser Zeit sind die Mitte und der Radius r einer Sphäre definiert als:
    center = (max + min)/2
    r = |max – min|/2
  • In der gleichen Weise wie ein Sphärenbaum in einem Blasenkollisionsverfahren wird ein Metabaum erzeugt. Nachdem der Metabaum erzeugt ist, wird ein Paar nicht-konvexer Polyeder, welche eine Möglichkeit zur Interferenz haben, durch eine Tiefensuche des Metabaums in der gleichen Weise wie im Blasenkollisionsverfahren detektiert. Die Distanz zwischen Metasphären wird auf einen Wert festgelegt, der durch Subtrahieren der Radien beider Metasphären von der Distanz zwischen ihren Mitten erhalten wird.
  • (g) Sukzessives Interferenzprüfverfahren, einschließlich der Erzeugung eines Metabaums
  • Wenn nach den Punkten einer engsten Annäherung zwischen beliebigen nicht-konvexen Polyedern sukzessiv gesucht wird, werden die Erzeugung eines Metabaums, der Gilbert-Prozess und der Blasenkollisionsprozess alle nur einmal alle paar Zyklen ausgeführt, und in den anderen Zyklen wird das Gilbert-Verfahren wiederholt auf die Polygonpaare angewendet, die im vorhergehenden Zyklus verwendet wurden, um die kürzeste Distanz zu erhalten, dadurch die Berechnungslast außerordentlich reduzierend.
  • 45 zeigt einen Ablauf des Algorithmus für einen sukzessiven Interferenzprüfprozess einschließlich der Erzeugung eines Metabaums. Der Zyklus wird zuerst gezählt, und eine Beurteilung wird diesbezüglich getroffen, ob der aktuelle Zyklus durch eine Konstante CYCLE ohne Rest ge teilt werden kann oder nicht. Falls die Antwort bejahend ist, wird eine Verarbeitung bei Schritten 3102 bis 3106 ausgeführt. Falls die Antwort negativ ist, wird eine Verarbeitung bei Schritten 3105 und 3106 ausgeführt. Falls z.B. CYCLE = 100 ist, wird die Verarbeitung bei den Schritten 3102 bis 3106 alle 100 Zyklen ausgeführt, und die Verarbeitung bei Schritten 3105 und 3106 wird zu irgendeiner anderen Zeit ausgeführt.
  • Falls der aktuelle Zyklus durch eine Konstante CYCLE ohne Rest geteilt werden kann, wird ein mit Verweis auf 44 erläuterter Metabaum erzeugt, und ein Paar nicht-konvexer Polyeder, welche eine Möglichkeit zur Interferenz haben, werden durch eine Tiefensuche des Metabaums detektiert. Durch diesen Prozess wird das Paar konvexer Hüllen, für das das Gilbert-Verfahren angewendet wird, bestimmt, und ein Interferenzprüfprozess gemäß dem Gilbert-Verfahren wird bezüglich des bestimmten Paares konvexer Hülsen beim Schritt 3103 ausgeführt. Falls das Paar konvexer Hülsen das gleiche wie das zur vorhergehenden Zeit ist, ist das beim Schritt 3103 übernommene Gilbert-Verfahren das Gilbert-Verfahren vom sukzessiven Typ. In anderen Fällen wird das Gilbert-Verfahren vom nicht-sukzessiven Typ übernommen. Falls die konvexen Hülsen nicht miteinander interferiert sind, wird als das Ergebnis des Gilbert-Prozesses ein Vektor nahegelegener Vertices erhalten (Schritt 3106). Falls sie miteinander interferieren, wird das Gilbert-Verfahren beim Schritt 3104 zu einem Blasenkollisionsverfahren umgeschaltet, und ein Vektor nahegelegener Vertices wird als das Ergebnis des Blasenkollisionsprozesses erhalten (Schritt 3106). Das Paar nahegelegener Polygone, das während des Blasenkollisionsprozesses herausgenommen wurde, wird beim Schritt 3105 gespeichert. Falls der aktuelle Zyklus kein Vielfaches von CYCLE ist, wird das Gilbert-Verfahren auf das beim Schritt 3105 gespeicherte Polygonpaar angewendet, um das Paar Polygone herauszunehmen, das sich am engsten annähert, und der Vektor nahegelegener Polygone wird berechnet.
  • (h) Sukzessives Interferenzprüfverfahren mit automatischer Einstellung der Zykluszeit
  • Im sukzessiven Interferenzprüfverfahren, das in 45 dargestellt ist, ist der Wert CYCLE fixiert. In diesem sukzessiven Interferenzprüfverfahren mit automatischer Einstellung der Zykluszeit wird die Zeit, die für die Schritte 3102 bis 3104 erforderlich ist, direkt von einem Takt eines Computers gemessen, und CYCLE wird auf der Basis dieses Wertes variiert.
  • 46 ist ein Flußdiagramm eines sukzessiven Interferenzprüfprozesses mit automatischer Einstellung der Zykluszeit. Dieser Ablauf ist von dem in 45 gezeigten insofern verschieden, als Schritt 3201 zum Messen der Verarbeitungsstartzeit t1 beim Schritt 3102 und Schritt 3202 zum Messen der Verarbeitungsendzeit t2 beim Schritt 3104 hinzugekommen sind und der Wert CYCLE durch die folgende Formel beim Schritt 3101 dynamischer bestimmt wird:
    CYCLE = [A/(t2 – t1)]
    worin A eine von der CPU-Leistung eines Computers abhängige Konstante ist. Infolge dieser Schritte wird, wenn der Wert (t2 – t1) groß ist, d.h. wenn die Verarbeitungszeit vom Start der Erzeugung eines Metabaums bis zum Ende der Blasenkollision lang ist, der Wert CYCLE klein, so dass die Frequenz einer Verarbeitung bei den Schritten 3102 bis 3104 erhöht wird. Auf der anderen Seite wird, wenn der Wert (t2 – t1) klein ist, die obige Frequenz reduziert, und die Frequenz einer Verarbeitung beim Schritt 3105, die eine kleinere Berechnungslast erfordert, wird erhöht.
  • (H) Blasenkollisionsverfahren vom sukzessiven Typ
  • (a) Gesamter Ablauf eines Interferenzprüfverfahrens in Echtzeit
  • 47 zeigt den gesamten Ablauf eines Interferenzprüfprozesses in Echtzeit.
  • Wenn eine Simulation gestartet wird (Schritt 4100), wird eine Vorverarbeitung für eine Interferenzprüfung ausgeführt (Schritt 4211). In der Vorverarbeitung für eine Interferenzprüfung vom sukzessiven Typ für nicht-konvexe Po lyeder wird eine Beurteilung diesbezüglich getroffen, ob es eine Datei einer konvexen Hülse (HL-Datei) gibt oder nicht (Schritt 4211). Da es am Anfang keine HL-Datei gibt, wird für ein CG-Modell, das abgerufen werden soll, eine konvexe Hülse erzeugt (Schritt 4213), und eine Datei einer konvexen Hülse (HL-Datei) wird ausgegeben (Schritt 4214). Von nächsten Zeitpunkt an wird sie gelesen, falls es eine Datei einer konvexen Hülse gibt (Schritt 4212).
  • In der Vorverarbeitung für einen Blasenkollisionsprozess (4220) werden Leaf-Sphären auf einem dreieckigen Polygon eines nicht-konvexen Polyeders erzeugt (Schritt 4221), und die Leaf-Sphären werden mit hierarchischen Einhüllungssphären eingehüllt, wodurch ein aus den Einhüllungssphären bestehender Binärbaum erzeugt wird (Schritt 4222).
  • Ein Bewegungsbefehlswert wird auf der Basis dreidimensionaler Eingabedaten, die von einer Vorrichtung mit einer Schnittstelle für Mensch und Maschine (MMI-Vorrichtung) wie z.B. einer Maus 302 eingegeben werden, bei Schritt 4300 zum Erzeugen eines Bewegungsbefehlswertes erzeugt (Schritt 4310). Alternativ dazu wird entlang einem programmierten Weg ein Bewegungsbefehlswert erzeugt (Schritt 4320). Danach wird, wie in 48 gezeigt, ein Objekt 404 (hier ein rechtwinkliges Parallelepiped B) im Verhältnis zu einem Objekt 405 (hier ein nicht-konvexes Polyeder A) bewegt (Schritt 4400), und die Umgebung in der CG wird geändert. Ein Eingabesystem für dreidimensionale Daten, das eine Maus nutzt, wird nun einfach erläutert. 49 zeigt die Struktur eines Eingabesystems für dreidimensionale Daten, das eine Maus nutzt. In diesem System verwendet ein Bediener 300 eine Maus mit drei Knöpfen, die an einem Computer 301 angebracht ist, und eine Funktionstaste 304 auf einer Tastatur 303, die an einem Computer 301 angebracht ist, so dass keine andere spezielle Vorrichtung notwendig ist. Es wird angenommen, dass das in 50 gezeigte CG-Modell auf einem Bildschirm des Computers 301 angezeigt wird. Im in 50 gezeigten Zustand erzeugt ein Berechnungsteil 406 für dreidimensionale Koordinaten einen Geschwindigkeitsbefehlswert gemäß der Position eines Cursors 405, und der Befehlswert wird integriert, um die dreidimensionalen Koordinaten zu berechnen. Die Knöpfe 1, 2 und 3 (411 bis 413) der Maus 302 entsprechen der jeweiligen Richtung x, y und z, und wenn die Knöpfe AN sind, werden die Geschwindigkeiten Vx, Vy, Vz in Übereinstimmung mit der Position des Cursors erzeugt. Wenn der Cursor auf der Mittellinie Xcent des Bildschirms positioniert ist, ist die Geschwindigkeit Null, und falls der Betrag V einer Verschiebung des Cursors klein ist, ist die Geschwindigkeit klein, während, falls der Betrag einer Verschiebung V groß ist, die Geschwindigkeit groß ist.
  • Eine Interferenzprüfung wird dann an der aktualisierten Umgebung im CG ausgeführt (Schritt 4500). Wenn die Objekte voneinander beabstandet sind, wird eine Interferenzprüfung vom sukzessiven Typ für konvexe Hülsen mit einer hohen Geschwindigkeit ausgeführt (Schritt 4510), und die Punkte einer engsten Annäherung, der Punkt eines Kontakts und die Distanz werden erhalten (Schritt 4511). Die Interferenz zwischen den konvexen Hülsen wird wieder geprüft (Schritt 4512), und eine Interferenzprüfung vom sukzessiven Typ für konvexe Hülsen wird wiederholt, bis die Interferenz zwischen konvexen Hülsen detektiert wird. Falls die Interferenz zwischen konvexen Hülsen detektiert wird, wird ein Blasenkollisionsverfahren vom sukzessiven Typ übernommen (Schritt 4520), und die Punkte einer engsten Annäherung, der Punkt eines Kontakts und die Distanz werden bezüglich der nicht-konvexen Polyeder als das Objekt einer Interferenzprüfung erhalten (Schritt 4521). Wenn ein Simulationsendbefehl durch eine Funktionstaste oder dergleichen ausgegeben wird (Schritt 4600), wird eine Simulation beendet (Schritt 4700). Falls kein Simulationsendbefehl ausgegeben wird, wird die Verarbeitung zum Erzeugen eines Bewegungsbefehlswertes und die anschließende Verarbeitung wiederholt.
  • Wie oben erläutert wurde, ist ein Interferenzprüfsystem in Echtzeit für ein System zum sequentiellen Prüfen einer Interferenz in Echtzeit effektiv, während sich Objekte bewegen, indem interaktiv eine Maus verwendet wird. Dieses System ist auch für ein System zum Prüfen der Interferenz zwischen Objekten effektiv, während sie sich auf einem programmierten Weg bewegen. Das Blasenkollisionsverfahren vom sukzessiven Typ bei 4520 wird im folgenden ausführlich erläutert.
  • (b) Vorverarbeitung für einen Blasenkollisionsprozess
  • In der Vorverarbeitung werden kleinste Sphären, welche Leaf-Sphären sind, auf einem dreieckigen Polygon angeordnet, welches ein Polyeder 404 (405) (51) bildet. 52A und 52B zeigen Beispiele eines mit Leaf-Sphären bedeckten dreieckigen Polygons. In 52A sind die Leaf-Sphären vergleichsweise groß, während in 52B die Leaf-Sphären klein sind. In dem in 52B gezeigten Beispiel ist, da es eine Lücke im dreieckigen Polygon gibt, die Lücke mit Sphären mit ungefähr dem gleichen Radius gefüllt. Der Radius einer Leaf-Sphäre ist durch den Skalenparameter S bestimmt, der oben beschrieben wurde. Diese Vorverarbeitung wird an allen dreieckigen Polygonen ausgeführt, und als Ergebnis wird das Objekt mit Leaf-Sphären gefüllt.
  • Die Leaf-Sphären werden gemäß einem Divide-and Conquer-Verfahren mit hierarchischen Einhüllungssphären eingehüllt, wodurch ein Binärbaum aus hierarchischen Einhüllungssphären erzeugt wird (53). 54 ist ein dreidimensionales Bild eines Binärbaums hierarchischer Einhüllungssphären. 55 zeigt hierarchisch ein Beispiel der Struktur hierarchischer Einhüllungssphären für das Objekt 404 (rechtwinkliges Parallelepiped B). 56 zeigt hierarchisch ein Beispiel der Struktur hierarchischer Einhüllungssphären für das nicht-konvexe Polyeder 405 (Objekt A). In 55 und 56 ist jedoch die Struktur durch Anordnen von Leaf-Sphären nur auf dem Konturteil vereinfacht, weil der gesamte Part eines dreieckigen Polygons mit darauf angeordneten Leaf-Sphären sehr kompliziert ist.
  • (c) Blasenkollisionsverfahren vom sukzessiven Typ
  • Ein Blasenkollisionsverfahren vom sukzessiven Typ ist ein Verfahren zum Steigern der Geschwindigkeit eines Blasenkollisionsverfahrens. Der Zustand eines Objekts im Blasenkollisionsverfahren vom sukzessiven Typ ist in 57A bis 57C dargestellt, und ein Ablauf einer Verarbeitung gemäß dem Blasenkollisionsverfahren vom sukzessiven Typ ist in 58 gezeigt. Ein nicht-konvexes Polyeder A und ein rechtwinkliges Parallelepiped B werden als Beispiel angeführt. Das Blasenkollisionsverfahren vom sukzessiven Typ wird für eine Interferenzprüfung für nicht-konvexe Polyeder mit einer komplizierten Gestalt verwendet, wenn ein Objekt sich in eine konvexe Hülse in großer Nähe zum anderen Objekt bewegt (siehe 57A bis 57C).
    • 1) Wenn ein Blasenkollisionsprozess vom sukzessiven Typ (Schritt 5100), falls es ein erstes Mal ist, oder ein Aktualisierungszyklus für ein Paar nahegelegener Polygone (Schritt 5200) gestartet wird, wird ein Blasenkollisionsprozess ausgeführt (Schritt 5300). Falls die Antwort beim Schritt 5200 negativ ist, wird die Interferenz zwischen einem im vorhergehenden Prozess gespeicherten Paar nahegelegener Polygone geprüft (Schritt 5400).
    • 2) Blasenkollisionsverfahren
    • 2-1) Beim Schritt zum Prüfen eines Paares nahegelegener Sphären (Schritt 5310) wird die Interferenz zwischen den in der Vorverarbeitung erzeugten Einhüllungssphären durch ein Tiefensuchverfahren auf der Basis des Binärbaums geprüft, und nach dem Paar Sphären einer engsten Annäherung wird gesucht. 59A bis 59G zeigen den Prozess einer Suche nach einem Paar nahegelegener Sphären und einer Suche nach einem Paar nahegelegener Polygone. Wenn die Interferenz zwischen Einhüllungssphären eines höheren Grades für die Objekte A, B detektiert wird, wie in 59A gezeigt ist, wird die Interferenz zwischen Einhüllungssphären eines niedrigeren Grades zu einem höheren Grad geprüft. Falls die Interferenz zwischen den Einhüllungssphären detektiert wird, wird in diesem Part bezüglich Einhüllungssphären eines weiteren niedrigeren Grades die Interferenzprüfung wiederholt.
  • Schließlich wird ein Paar Sphären, welche sich am engsten annähern, erhalten, wie in 59G gezeigt ist.
    • 2-2) Beim Schritt zum Prüfen eines Paars nahegelegener Polygone (bei 5320) wird das Paar Polygone gesucht, auf welchem die Mitten der erhaltenen Sphären liegen (P11 und P12, P21 und P22 werden in 59(G) gesucht). Dieses sind Paare von Polygonen (ein Paar nahegelegener Polygone), welche möglicherweise die Punkte einer engsten Annäherung enthalten.
    • 2-3) Beim Paare nahegelegener Polygone speichernden Schritt (bei 5330) werden Paare nahegelegener Polygone wie z.B. die beim Schritt 5320 erhaltenen Polygone P11 und P12, P21 und P22 gespeichert.
    • 2-4) Bei dem Interferenzprüfschritt (Schritt 5340) wird das Gilbert-Verfahren auf das Paar nahegelegener Polygone angewendet, um den Punkt eines Kontakts oder die Punkte einer engsten Annäherung und die Distanz dazwischen zu berechnen. Falls die Interferenz detektiert wird (Schritt 5341), wird der Kontaktpunkt ausgegeben (Schritt 5342). Falls es keine Interferenz gibt, wird die Distanz d1 zwischen den Punkten einer engsten Annäherung durch die Interferenzprüfung für die Polygone P11 und P12 erhalten, wird die Distanz d2 zwischen den Punkten einer engsten Annäherung durch die Interferenzprüfung für die Polygone P21 und P22 erhalten, und diese Verarbeitung wird wiederholt (Schritt 5343). Danach wird die kürzeste Distanz als die Distanz zwischen den Punkten einer engsten Annäherung ausgegeben (Beurteilung eines minimalen Wertes, Schritt 5344). In 57 wird, da die Distanz d2 kürzer als die Distanz d1 ist, die erstgenannte als die Distanz zwischen den Punkten einer engsten Annäherung bestimmt und ausgegeben (Schritt 5345).
    • 3) Interferenzprüfung für ein Paar nahegelegener Polygone
    • 3-1) Das rechtwinklige Parallelepiped B wird im nächsten Zyklus, wie in 57C gezeigt, nach links bewegt. Da es nicht der Aktualisierungszyklus für ein Paar nahegelege ner Polygone ist, wird jedoch die Interferenz zwischen einem gespeicherten Paar nahegelegener Polygone geprüft (Schritt 5400). Falls angenommen wird, dass das rechtwinklige Parallelepiped B ein wenig bewegt wird, sind die Paare nahegelegener Polygone P11 und P12, P21 und P22 die gleichen wie beim Schritt 5320. Daher wird eine Interferenzprüfung nur für die beim Schritt 5330 gespeicherten Paare nahegelegener Polyone ausgeführt, um die Punkte einer engsten Annäherung oder den Kontaktpunkt zu erhalten. Beim Schritt 5410 zum Abrufen von Paaren nahegelegener Polygone werden die beim Schritt 5330 gespeicherten Paare nahegelegener Polygone wie z.B. P11 und P12, P21 und P22 abgerufen.
    • 3-2) Für die abgerufenen Paare nahegelegener Polygone P11 und P12, P21 und P22 etc. wird eine Interferenzprüfung ausgeführt, um den Kontaktpunkt oder die Punkte einer engsten Annäherung zu erhalten (Schritt 5440). Da die Distanz d3 kürzer als die Distanz d2 in 57C ist, wird die erstgenannte als die Distanz zwischen den Punkten einer engsten Annäherung ausgegeben.
  • Da angenommen wird, dass die Bewegungsdistanz/Lageänderung klein ist, wird für eine Weile eine Prüfung von Paaren nahegelegener Polygone (Schritt 5400) zum Prüfen der Interferenz zwischen jedem dieser mehreren Paare nahegelegener Polygone wiederholt. Es ist möglich, die Berechnungszeit zu verkürzen, indem die Interferenz nur zwischen jedem der gespeicherten mehreren Paare nahegelegener Polygone geprüft wird. Da jedoch eine Möglichkeit besteht, dass ein Paar nahegelegener Polygone sich ändert, wenn die Bewegungsdistanz lang wird, wird alle paar Zyklen ein Blasenkollisionsprozess ausgeführt (Schritt 5300), um die Paare nahegelegener Polygone zu aktualisieren. Wenn die Bewegungsdistanz lang wird, werden auf dem CG zeitweise falsche Punkte einer engsten Annäherung angezeigt, aber diese werden beim nächsten Aktualisierungszyklus für nahegelegene Polygone sofort korrigiert. Falls der Zyklus eines ein Paar nahegelegener Polygone aktualisieren Prozesses geeignet ist, gibt es kein Problem in der Verwendung, selbst wenn zeitweise falsche Ergebnisse angezeigt werden, da die korrekten Ergebnisse sofort angezeigt werden. In dieser Ausführungsform ist der Zyklus eines ein nahegelegenes Polygon aktualisierenden Prozesses nicht so eingestellt, um ein Problem in der Anwendung zu erzeugen, und wird manuell eingegeben.
  • (d) Effekt eines Blasenkollisionsverfahrens vom sukzessiven Typ
  • 60A zeigt die Berechnungszeit, die für eine Interferenzprüfung allein durch ein Blasenkollisionsverfahren erforderlich ist. Die Berechnungszeit beträgt konstant mehrere zehn bis mehrere hundert ms. Obgleich eine Interferenzprüfung mehrere zehn bis mehrere hundert ms gemäß dem Kollisionsblasenverfahren benötigt, benötigt auf der anderen Seite eine Prüfung nahegelegener Polygone gemäß der vorliegenden Erfindung nur mehrere ms, so dass, falls eine Interferenzprüfung hauptsächlich durch eine Prüfung nahegelegener Polygone ausgeführt wird, die durchschnittliche Berechnungszeit so kurz ist, wie es durch die gestrichelte Linie in 60B angegeben ist. Falls z.B. angenommen wird, dass die Verarbeitungszeit gemäß einem Blasenkollisionsverfahren 100 ms ist, die Verarbeitungszeit gemäß der Prüfung nahegelegener Polygone 1 ms ist und der Prozess zum Aktualisieren von Paaren nahegelegener Polygone gemäß dem Blasenkollisionsprozess alle 100 Zyklen durchgeführt wird, beträgt die durchschnittliche Berechnungszeit etwa 2 ms (=(100 + 99·1)/100). Selbstverständlich ist das Blasenkollisionsverfahren vom sukzessiven Typ auf ein beliebiges nicht-konvexes Polyeder anwendbar.
  • Das sukzessive Blasenkollisionsverfahren ermöglicht eine Interferenzprüfung in Echtzeit für beliebige nicht-konvexe Polyeder zu jeder Zeit in Übereinstimmung mit der Bewegungsgeschwindigkeit eines Objekts. Dieses Verfahren ist z.B. auf die Erzeugung einer Umgebung anwendbar, in der eine Interferenzprüfung in Echtzeit unter Verwendung einer MMI wie z.B. einer Maus zur Zeit einer interaktiven Opera tion möglich ist und die Ergebnisse auf einem CG-Modell für den Nutzer angezeigt werden.
  • Falls das sukzessive Blasenkollisionsverfahren für ein CAD-System zum Entwerfen eines Mechanismus angewendet wird, ist es möglich, Teile zusammenzusetzen, während eine Interferenzprüfung in Echtzeit in der CG ausgeführt wird, so dass beurteilt werden kann, ob ein Zusammensetzen möglich ist oder nicht. Außerdem ist es möglich, die Bewegung eines zusammengesetzten Mechanismusteils zu prüfen, und dadurch ist es möglich, einen Fehler beim Entwerfen zu detektieren, was eine schnelle Rückkopplung zum Entwurf oder eine Reduzierung der Zahl von Prototypen zur Folge hat. Dieses Verfahren ist auch auf verschiedene Gebiete wie z.B. eine Wegerzeugung für Manipulatoren und mobile Roboter wie selbstfahrende Fahrzeuge, Erzeugung von Animationen für Multimediagebrauch und Spielesoftware anwendbar.
  • (I) Verfahren zum automatischen Bestimmen des Zyklus eines Paare nahegelegener Polygone aktualisierenden Prozesses in einem Blasenkollisionsverfahren vom sukzessiven Typ
  • Im Blasenkollisionsverfahren vom sukzessiven Typ ist es notwendig, den Zyklus eines Paare nahegelegener Polygone aktualisierenden Prozesses (Zyklus eines Blasenkollisionsprozesses) gemäß der Gestalt eines Objekts und dessen Bewegungsgeschwindigkeit einzustellen. In der Ausführungsform in (H) wird als der Zyklus eines Paare nahegelegener Polygone aktualisierenden Prozesses ein konstanter Wert verwendet, der erhalten wird, indem der Zyklus eines nahegelegene Polygone aktualisierenden Prozesses eingestellt wird, und manuell eingegeben wird, aber falls dieser Zyklus ungeeignet ist, kommt es zu folgenden Problemen. Falls zum Beispiel der Blasenkollisionsprozess alle 200 Zyklen durchgeführt wird, ist der Zyklus so lang, dass ein Aktualisieren eines Paares nahegelegener Polygone verzögert wird. Als Folge wird eine Interferenzprüfung für das falsche Polygonpaar P21, P22, wie in 61 gezeigt, ausgeführt, und die Distanz d2' zwischen dessen Punkten einer engsten Annähe rung wird ausgegeben. Falls auf der anderen Seite der Blasenkollisionsprozess alle 10 Zyklen durchgeführt wird, wird, da ein Paar nahegelegener Polygone in einer kurzen Zeit aktualisiert wird, die Distanz d3 zwischen dem korrekten Paar nahegelegener Polygone berechnet und ausgegeben. Die Anzahl von Malen einer Ausführung eines Blasenkollisionsprozesses wird jedoch erhöht, so dass eine Interferenzprüfung lange Zeit in Anspruch nimmt. Eine Einstellung des Zyklus gemäß dem Trial-and-Error-Verfahren ist daher schwierig.
  • Die für die Ausführung des Blasenkollisionsprozesses notwendige Berechnungszeit wird gemäß der vorliegenden Erfindung jedes Mal gemessen, und der Zyklus eines Paare nahegelegener Polygone aktualisierenden Prozesses wird automatisch aus der Berechnungszeit und nicht durch das Trial-and-Error-Verfahren bestimmt. Da dieser Zyklus in Übereinstimmung mit einer Änderung in der Berechnungszeit in einem Blasenkollisionsverfahren automatisch bestimmt wird, ist die Reduzierung der Berechnungszeit mit der Aktualisierungszeitsteuerung gut ausgeglichen. 62 zeigt den Ablauf eines Verfahrens zum automatischen Bestimmen des Zyklus eines ein Paar nahegelegener Polygone aktualisierenden Prozesses im Blasenkollisionsverfahren vom sukzessiven Typ. Dies ist ein Flussdiagramm, welches das gleiche wie das in 58 gezeigte ist, außer dass Schritte 5601 bis 5603, die durch die schraffierten Flächen angegeben sind, hinzugekommen sind. Um die Berechnungszeit zu erhalten, wird zuerst die aktuelle Zeit t1 durch einen innerhalb des Computers gelieferten Takt gemessen, bevor ein Blasenkollisionsprozess ausgeführt wird (Schritt 5601). Als nächstes wird der Blasenkollisionsprozess durchgeführt, wird danach ähnlich die aktuelle Zeit t2 erhalten, und die Berechnungszeit im Blasenkollisionsprozess wird aus der folgenden Formel berechnet: tBC = t2 – t1 (Schritt 5602).
  • Der Zyklus eines Paare nahegelegener Polygone aktualisierenden Prozesses wird dann zum Beispiel aus der folgenden Formel erhalten: Zyklus eines Aktualisierprozesses = tBC × α – Schritt 5602.
  • Es ist jedoch notwendig, α einzustellen. Falls angenommen wird, dass eine Interferenzprüfung gemäß dem Blasenkollisionsverfahren 100 ms dauert, eine Interferenzprüfung gemäß dem Blasenkollisionsverfahren vom sukzessiven Typ 1 ms dauert und α = 1,5 ist, ist der Zyklus eines Aktualisierprozesses 150, was bedeutet, dass der Blasenkollisionsprozess alle 150 Zyklen durchgeführt wird, und die durchschnittliche Berechnungszeit beträgt etwa 1,66 ms (= 100 + 149 × 1)/150.
  • Da in 63A die zweite Berechnungszeit tb länger als die erste Berechnungszeit ta ist, wird der Zyklus eines Aktualisierprozesses lang. Da die dritte Berechnungszeit tc kurz ist, wird der Zyklus eines Aktualisierprozesses verkürzt. Obgleich die durchschnittliche Berechnungszeit geringfügig schwankt, wie durch die gestrichelten Linien angegeben ist, ist sie im Vergleich zur durchschnittlichen Berechnungszeit in einem Fall reduziert, in dem nur ein Blasenkollisionsverfahren übernommen wird. Durch Verlängern des Zyklus eines Aktualisierprozesses, wenn die Berechnungszeit tBC länger wird, ist es auf diese Weise möglich, die durchschnittliche Berechnungszeit zu verkürzen, und außerdem wird eine schnelle Antwort ermöglicht. Obgleich es möglich ist, dass falsche Ergebnisse ausgegeben werden, wird das Paar nahegelegener Polygone gemäß dem Blasenkollisionsverfahren aktualisiert, so dass die korrekten Ergebnisse ausgegeben werden.
  • In 63A wird der Zyklus eines Aktualisierprozesses verlängert, wenn die Berechnungszeit tBC länger wird. Falls jedoch eine streng korrekte Ausgabe notwendig ist, wird der Zyklus verkürzt, wenn die Berechnungszeit tBC länger wird.
  • Da die zweite Berechnungszeit tb länger ist als die erste Berechnungszeit ta, wird in 63B der Zyklus eines Aktualisierprozesses kurz. Da die dritte Berechnungszeit tc kurz ist, wird der Zyklus eines Aktualisierprozesses verlängert. Obgleich die durchschnittliche Berechnungszeit geringfügig schwankt, wie durch die gestrichelten Linien angegeben ist, wird sie im Vergleich zur durchschnittlichen Berechnungszeit in einem Fall, in dem nur ein Blasenkollisionsverfahren übernommen wird, außerordentlich reduziert. Wenn tBC lang ist, ist der Zyklus eines ein Paar benachbarter Polygone aktualisierenden Prozesses kurz, und die durchschnittliche Berechnungszeit wird lang. Dieses Verfahren ermöglicht jedoch eine strikte und korrekte Interferenzprüfung für ein Paar nahegelegener Polygone, so dass die korrekten Punkte einer engsten Annäherung und die Distanz zwischen den Punkten einer engsten Annäherung ausgegeben werden.
  • Da die für die Ausführung des Blasenkollisionsprozesses notwendige Berechnungszeit jedes Mal gemessen und der Zyklus eines Aktualisierprozesses gemäß einer Änderung der Berechnungszeit automatisch bestimmt wird, wie oben beschrieben wurde, ist es möglich, die Reduzierung der Berechnungszeit mit der Aktualisierzeitsteuerung gut auszugleichen.
  • (J) Erste Modifikation eines Blasenkollisionsverfahrens vom sukzessiven Typ
  • Da im Blasenkollisionsverfahren vom sukzessiven Typ angenommen wird, dass die Bewegungsdistanz/Lageänderung klein ist, wird, falls sich ein Objekt in einem großen Ausmaß bewegt, die Distanz zwischen einem falschen Polygonpaar angezeigt (61B). Um dies zu verhindern, wird, wenn die Bewegungsdistanz/Lageänderung größer als ein vorbestimmter Schwellenwert ist, eine Interferenzprüfung gemäß einem Blasenkollisionsverfahren ausgeführt, um ein Paar nahegelegener Polygone zu aktualisieren, selbst wenn der nächste Zyklus zum Aktualisieren eines Paares benachbarter Polygone nicht kommt. Auf diese Weise ist es möglich, die korrekten Ergebnisse einer Interferenzprüfung zu erhalten. Falls zum Beispiel |Δx| > |Δxlimit|gilt, wird eine Interferenzprüfung gemäß einem Blasenkollisionsverfahren ausgeführt, um ein Paar nahegelegener Polygone zu aktualisieren. 64 ist ein Flussdiagramm einer solchen Verarbeitung. Dieses Flussdiagramm ist dasselbe wie das in 62 gezeigte, außer dass Schritt 5604, der durch die schraffierte Fläche angegeben ist, hinzugekommen ist.
  • In der obigen Formel repräsentiert Δx den Bewegungsbetrag oder -umfang eines Objektes während eines Zyklus und Δxlimit einen Schwellenwert.
  • Der Schwellenwert Δxlimit wird bestimmt durch Lmax/β, falls die Länge der längsten Seite eines sich bewegenden Objektes B als Lmax angenommen wird, oder wird durch RO/β, bestimmt, falls der Radius der größten Einhüllungssphäre des sich bewegenden Objekts als RO angenommen wird, oder wird durch RLmax·β bestimmt, falls der größte Radius der Leaf-Sphären des sich bewegenden Objekts B als RLmax angenommen wird (worin β etwa 2 bis 4 ist und es notwendig ist, β einzustellen), wie in 65A bis 65C gezeigt ist.
  • Der Schwellenwert Δxlimit kann auch durch Lmax'/β bestimmt werden, falls die Länge der längsten Seite des kleinsten unter den Objekten einer Interferenzprüfung als Lmax' angenommen wird, oder wird bestimmt durch RO'/β, falls der Radius der größten Einhüllungssphäre des kleinsten unter den Objekten einer Interferenzprüfung als RO' angenommen wird, oder wird bestimmt durch RLmax'/β, falls der größte Radius der Leaf-Sphären des kleinsten unter den Objekten einer Interferenzprüfung als RLmax' angenommen wird.
  • (K) Zweite Modifikation eines Blasenkollisionsverfahrens vom sukzessiven Typ
  • Da im Blasenkollisionsverfahren vom sukzessiven Typ angenommen wird, dass die Bewegungsdistanz/Lageänderung klein ist, wird, falls sich ein Objekt in einem großen Ausmaß bewegt, die Distanz zwischen einem falschen Polygonpaar angezeigt (61B). Um dies zu verhindern, wird, wenn die Bewegungsgeschwindigkeit größer als ein vorbestimmter Schwellenwert ist, eine Interferenzprüfung gemäß einem Blasenkollisionsverfahren ausgeführt, um ein Paar nahegelegener Polygone zu aktualisieren, selbst wenn der nächste Zyklus zum Aktualisieren eines Paars nahegelegener Polygone nicht kommt. Auf diese Weise ist es möglich, die korrekten Ergebnisse einer Interferenzprüfung zu erhalten. Falls zum Beispiel |v|> |vlimit|gilt, wird eine Interferenzprüfung gemäß einem Blasenkollisionsverfahren ausgeführt, um ein Paar nahegelegener Polygone zu aktualisieren. 66 ist ein Flussdiagramm einer solchen Verarbeitung. Dieses Flussdiagramm ist dasselbe wie das in 62 gezeigte, außer dass Schritt 5605, angegeben durch die schraffierte Fläche, hinzugekommen ist. In der obigen Formel repräsentiert v die Bewegungsgeschwindigkeit eines Objekts und vlimit einen Schwellenwert.
  • Der Schwellenwert vlimit ist bestimmt durch Lmax/β·dt, falls angenommen wird, dass die Länge der längsten Seite eines sich bewegenden Objekts Lmax ist, oder ist bestimmt durch RO/β·dt, falls angenommen wird, dass der Radius der größten Einhüllungssphäre des sich bewegenden Objekts RO ist, oder ist bestimmt durch RLmax/β·dt, falls angenommen wird, dass der größte Radius der Leaf-Sphären des sich bewegenden Objekts RLmax ist (worin dt ein winziges Zeitintervall ist und β etwa 2, 3 und 4 ist und es notwendig ist, β einzustellen), wie in 65A bis 65C gezeigt ist.
  • Der Schwellenwert vlimit kann auch bestimmt werden durch Lmax'/β·dt, falls angenommen wird, dass die Länge der längsten Seite des kleinsten unter den Objekten einer Interferenzprüfung Lmax' ist, oder wird bestimmt durch RO'/β·dt, falls angenommen wird, dass der Radius der größ ten Einhüllungssphäre des kleinsten unter den Objekten einer Interferenzprüfung RO' ist, oder wird bestimmt durch RLmax'/β·dt, falls der größte Radius der Leaf-Sphären des kleinsten unter den Objekten einer Interferenzprüfung RLmax' ist.
  • (L) Dritte Modifikation eines Blasenkollisionsverfahrens vom sukzessiven Typ
  • Da im Blasenkollisionsverfahren vom sukzessiven Typ angenommen wird, dass die Bewegungsdistanz/Lageänderung klein ist, wird, falls ein Objekt sich in einem großen Ausmaß bewegt, die Distanz zwischen einem falschen Polygonpaar angezeigt (61B). Um dies zu verhindern, wird, wenn das Verhältnis der aktuellen Distanz zwischen den Punkten einer engsten Annäherung und der vorhergehenden Distanz zwischen den Punkten einer engsten Annäherung größer als ein vorbestimmter Schwellenwert wird, eine Interferenzprüfung gemäß einem Blasenkollisionsverfahren ausgeführt, um ein Paar nahegelegener Polygone zu aktualisieren, selbst wenn der nächste Zyklus zum Aktualisieren eines Paares nahegelegener Polygone nicht kommt. Auf diese Weise ist es möglich, die korrekten Ergebnisse einer Interferenzprüfung zu erhalten. Falls zum Beispiel (Verhältnis der aktuellen Distanz zwischen den Punkten einer engsten Annäherung und der vorhergehenden Distanz zwischen den Punkten einer engsten Annäherung) > γ ist, worin γ etwa 3 bis 5 ist, wird eine Interferenzprüfung gemäß einem Blasenkollisionsverfahren ausgeführt, um ein Paar nahegelegener Polygone zu aktualisieren. Denn die aktuelle Distanz zwischen den Punkten einer engsten Annäherung ist 5-mal so groß wie die vorhergehende Distanz, mit der Bedeutung, dass sich ein Objekt in einem großen Ausmaß bewegt.
  • Das Verhältnis der aktuellen Distanz zwischen den Punkten einer engsten Annäherung und der vorhergehenden Distanz zwischen den Punkten einer engsten Annäherung ist |d1'/d1| im Paar nahegelegener Polygone P11, P12 und |d2'/d2| im Paar nahegelegener Polygone P21, P22 in 67. Falls an genommen wird, dass γ = 3 ist, wird, da |d1'/d1| > 3 und |d2'/d2| > 3 sind, ein Blasenkollisionsprozess ausgeführt, um ein Paar nahegelegener Polygone zu aktualisieren, die Interferenz zwischen dem aktualisierten Paar nahegelegener Polygone zu prüfen und die korrekte Distanz d3 zwischen den Punkten einer engsten Annäherung auszugeben.
  • 68 ist ein Flussdiagramm einer solchen Verarbeitung. Dieses Flussdiagramm ist dasselbe wie das in 62 gezeigte, außer dass die durch die schraffierten Flächen angegebenen Schritte 5606 und 5607 hinzugekommen sind. Beim Schritt 5606 wird ein Modifizierer-Flag BCmode beurteilt. Falls BCmode 1 ist, wird ein Blasenkollisionsverfahren übernommen, um ein Paar nahegelegener Polygone zu aktualisieren und die Interferenz dazwischen zu prüfen. Falls BCmode 0 ist, wird die Interferenz zwischen einem Paar nahegelegener Polygone geprüft. Beim Schritt 5607 werden zuerst die Distanz di' zwischen den Punkten einer engsten Annäherung und das Paar nahegelegener Polygone zu dieser Zeit gespeichert. Das Verhältnis |di'/di| der aktuellen Distanz zwischen den Punkten einer engsten Annäherung und der vorhergehenden Distanz zwischen den Punkten einer engsten Annäherung wird dann berechnet (di ist die Distanz zwischen den Punkten einer engsten Annäherung im vorhergehenden Zyklus). Falls |di'/di| > γ ist (γ ist etwa 3 bis 5), wird das Modifizierer-Flag BCmode auf 1 eingestellt, und falls |di'/di| < γ ist, wird das Modifizierer-Flag BCmode auf 0 eingestellt. Falls das Modifizierer-Flag BCmode 1 ist, wird im nächsten Zyklus ein Blasenkollisionsprozess ausgeführt, um ein Paar nahegelegener Polygone zu aktualisieren.
  • In der ersten bis dritten Modifikation wird nur das in 62 gezeigte sukzessive Blasenkollisionsverfahren modifiziert; es ist aber auch möglich, das in 58 gezeigte sukzessive Blasenkollisionsverfahren ähnlich zu modifizieren.
  • (M) Steigerung der Effizienz in einer Interferenzprüfung, wenn Objekte stationär sind
  • (a) Steigerung der Effizienz einer Interferenzprüfung außerhalb konvexer Hülsen, wenn Objekte stationär sind
  • Herkömmlicherweise wird Gewicht auf die Steigerung der Geschwindigkeit in einer Interferenzprüfung gelegt, um eine Interferenzprüfung in Echtzeit zu ermöglichen. Deshalb wird eine Interferenzprüfung bei jedem Schritt ausgeführt, um die Echtzeiteigenschaft beizubehalten. Nachdem eine Interferenzprüfung einmal ausgeführt ist, sind jedoch, falls allle Objekte einer Prüfung stationär sind, die Ergebnisse dieselben wie die Ergebnisse im vorhergehenden Zyklus, so dass es nicht notwendig ist, die Ergebnisse der Interferenzprüfung zu aktualisieren. Der Geschwindigkeitsbefehl und die Positionsabweichung werden überwacht, und falls der Geschwindigkeitsbefehl und die Positionsabweichung Null sind, werden die Ergebnisse der Interferenzprüfung im vorherigen Zyklus verwendet wie sie sind, um die Berechnung in der Interferenzprüfung wegzulassen. Dieses Verfahren erzeugt einen großen Effekt, wenn mehr als zwei Gruppen von Objekten einer Interferenzprüfung existieren. Denn in diesem Fall ist eine Berechnung nur in der Interferenzprüfung für die Gruppen notwendig, welche ein sich bewegendes Objekt enthalten, so dass die Effizienz gesteigert wird.
  • Eine Interferenzprüfung für Roboter in einer Automobilfabrik, wie zum Beispiel in der in 69 gezeigten, wird als ein Beispiel genommen. Es wird angenommen, dass ein Roboter 1 und ein Roboter 2 im Prozess eines Lackiervorgangs in einem programmierten Arbeitsweg sind und ein Roboter 3 einen Vorgang zum Anziehen von Schrauben oder dergleichen gemäß einem von einer MMI (Mensch-Maschine-Schnittstelle), wie zum Beispiel einer Maus, gelieferten interaktiven Befehlswert ausführt. In diesem Fall gibt es drei Gruppen von Objekten einer Interferenzprüfung. Eine erste Gruppe besteht aus dem Roboter 1 und einem Wagen, eine zweite Gruppe besteht aus dem Roboter 2 und dem Wagen, und eine dritte Gruppe besteht aus dem Roboter 3, dem Roboter 2 und dem Wagen. Falls angenommen wird, dass die für eine Interferenz prüfung für jede Gruppe erforderliche Berechnungszeit 10 ms ist, ist die folgende Steigerung der Effizienz möglich.
  • 1) Wenn der Roboter 1 stationär ist
  • Die Ergebnisse der Interferenzprüfung für die erste Gruppe werden beibehalten, und die gesamte Berechnungszeit ist 20 ms.
  • 2) Wenn der Roboter 2 stationär ist
  • Die Ergebnisse der Interferenzprüfung für die zweite Gruppe werden beibehalten, und die gesamte Berechnungszeit ist 20 ms.
  • 3) Wenn die Roboter 1 und 2 stationär sind
  • Die Ergebnisse der Interferenzprüfung für die ersten und zweiten Gruppen werden beibehalten, und die gesamte Berechnungszeit ist 10 ms.
  • Eine Steigerung der Effizienz ist auch in dem Fall möglich, wenn der Wagen durch ein anderes Gerät oder Produkt ersetzt wird und die Anzahl von Robotern größer ist.
  • (b) Steigerung der Effizienz einer Interferenzprüfung innerhalb konvexer Hülsen, wenn die Objekte stationär sind
  • In (a) wird eine Effizienz in einer Interferenzprüfung gesteigert, wenn Objekte außerhalb konvexer Hülsen stationär sind. Dieses Verfahren ist auch anwendbar auf die Situation, in der ein Objekt innerhalb einer konvexen Hülse ist und stationär ist. Es gibt nur einen geringfügigen Unterschied in (a) und (b).
  • Nachdem eine Interferenzprüfung einmal in den konvexen Hülsen gemäß dem sukzessiven Blasenkollisionsverfahren ausgeführt ist, ist es, falls alle Objekte einer Prüfung stationär sind, nicht notwendig, die Ergebnisse der Interferenzprüfung im vorhergehenden Zyklus zu aktualisieren. Der Geschwindigkeitsbefehl und die Positionsabweichung werden überwacht, und falls der Geschwindigkeitsbefehl und die Positionsabweichung Null sind, werden die Ergebnisse der Interferenzprüfung im vorhergehenden Zyklus verwendet wie sie sind, um die Berechnung in der Interferenzprüfung wegzulassen. Es ist jedoch notwendig, den Blasenkollisionsprozess einmal auszuführen, um das korrekte Paar nahegelegener Polygone im Aktualisierprozess für nahegelegene Polygone zu erhalten, nachdem die Objekte stationär werden. Gemäß diesem Verfahren ist, wenn mehr als zwei Gruppen von Objekten einer Interferenzprüfung existieren, eine Berechnung nur in der Interferenzprüfung für die Gruppen notwendig, welche ein sich bewegendes Objekt enthalten, so dass die Effizienz gesteigert werden kann.
  • Ein einfaches Modell, das zum Beispiel aus einem U-förmigen Objekt C und einem Kubus D besteht, die in 70 gezeigt sind, wird als ein Beispiel erläutert. Zur Zeit t1 wird, wenn das Objekt D sich bewegt, eine korrekte Interferenzprüfung für das Paar nahegelegener Polygone P11 und P21 ausgeführt. Danach wird jedoch der Bewegungsumfang erhöht und, falls das Objekt D zur Zeit t2 stoppt, nehmen die Objekte C und D den in (b) gezeigten Zustand ein. In diesem Zustand wird eine Interferenzprüfung für das falsche Paar nahegelegener Polygone P11 und P21 ausgeführt, so dass das falsche Ergebnis ausgegeben wird. Falls das Verfahren übernommen wird, bei dem die Ergebnisse der Interferenzprüfung im vorhergehenden Zyklus verwendet werden wie sie sind, um die Berechnung zu der Zeit wegzulassen, wenn der Geschwindigkeitsbefehl und die Positionsverschiebung Null sind, wird das falsche Polygonpaar P11, P12 beibehalten wie es ist, bis zur Zeit t5, wenn das Objekt D sich wieder zu bewegen beginnt. Um dies zu verhindern, wird, nachdem das Objekt D zur Zeit t2 stoppt, ein Blasenkollisionsverfahren nur einmal in dem Aktualisierzyklus für Paare nahegelegener Polygone t3 übernommen, um das korrekte Paar nahegelegener Polygone P12, P22 zu erhalten, und die Interferenz zwischen den Polygonen P12, P22 wird geprüft. Die Ergebnisse werden gespeichert, und sie werden bis zur Zeit t4 verwendet wie sie sind, wodurch eine unnötige Interferenzprüfung weggelassen wird.
  • Falls dieses Verfahren auf die Interferenzprüfung für Roboter in einer Automobilfabrik, wie in 69 gezeigt, angewendet wird, wird die Effizienz einer Interferenzprü fung ebenfalls gesteigert, wenn Objekte sich dicht annähern und ein Objekt in einer konvexen Hülse enthalten ist.
  • (N) Industrielle Anwendungsgebiete
  • Die vorliegende Erfindung ist auf die folgenden Gebiete anwendbar.
  • (a) CAD-System zum Entwerfen eines Mechanismus
  • Beim Entwerfen eines Mechanismus tritt häufig eine unverhoffte Interferenz auf, wenn hergestellte Teile zusammengesetzt werden. Um dies zu verhindern, ist es wichtig, große Sorgfalt beim Prüfen der Toleranzen hergestellter Teile und der Beziehung von Verbindungen zwischen Teilen walten zu lassen. Durch Anwenden eines Interferenzprüfverfahrens in Echtzeit gemäß der vorliegenden Erfindung auf ein CAD-System zum Entwerfen eines Mechanismus ist es möglich, eine Vorprüfung hergestellter Teile in einer die tatsächlichen Teile approximierenden Form durchzuführen.
  • (b) Wegeplanung in mobilen Robotern
  • In einem Manipulator oder einem mobilen Roboter wie zum Beispiel einem selbstfahrenden Fahrzeug ist es oft der Fall, dass ein Weg geplant wird, um eine Kollision zwischen dem Manipulator oder dem mobilen Roboter und einem anderen Objekt zu vermeiden, bevor er angetrieben wird. Beim Schritt des Zusammensetzens von Teilen durch Verwenden eines Manipulators werden zum Beispiel Teilmodelle und ein Manipulatormodell auf einem CAD-System zum Entwerfen eines Mechanismus platziert, und der Schritt des Zusammensetzens jedes Teils durch Verwenden des Manipulators wird geplant. In diesem Fall ist es notwendig, einen Weg zu programmieren, während die Interferenz zwischen Teilen und zwischen einem Teil und dem Manipulator geprüft wird. In einem selbstfahrenden Roboter wie zum Beispiel einem Reinigungsroboter, einem Überwachungsroboter und einem Transportroboter ist es notwendig, einen Weg zu programmieren, um Kollisionen zwischen dem Roboter und einem Hindernis wie zum Beispiel einer Wand, einer Säule und einem Tisch während einer Bewegung zwischen zwei Punkten zu vermeiden. Das Interferenzprüfverfahren der vorliegenden Erfindung ist für eine solche Wegplanung verwendbar, um eine Interferenz vor einer Programmierung zu prüfen.
  • (c) Animation in Multimedia
  • In Multimedia erwartet man verschiedene Anwendungen von Computergraphik, Echtbildern, Ton etc. in einer gemischten Form. Auf dem Gebiet des Handels und der Bildverarbeitung ist die Erzeugung einer äußerst realistischen Animation unter Verwendung von Computergraphik erwünscht. In herkömmlicher Computergraphik wird eine Animation allgemein offline erzeugt, und Interferenz wird individuell geprüft. Der vorherrschende Trend der zukünftigen Animationen ist Echtzeit-/interaktive Animation, die durch Verwenden von Hochgeschwindigkeits-Computergraphik erzeugt wird. In diesem Fall ist der Schlüssel, wie schnell das Interferenzproblem zwischen CAD-Modellen gelöst wird. Zum Beispiel im Falle einer Bewegung eines Androidmodells (CG-Modell in der Gestalt eines Menschen) muss das Problem eines Kontakts zwischen dem Androidmodell und dem Boden gelöst werden. Im Fall einer Simulation einer Fahrzeugkollision muss das Problem einer Interferenz zwischen Fahrzeugen gelöst werden. Das Hochgeschwindigkeits-Interferenzprüfverfahren der vorliegenden Erfindung ist eine essentielle Technik für die Erzeugung einer Echtzeit-/interaktiven Animation.
  • (d) Spielesoftware
  • Obgleich herkömmliche Spielesoftware im allgemeinen zweidimensional ist, wird vorhergesagt, dass dreidimensionale Anzeigen unter Verwendung von Computergraphik in der Zukunft gängig sein werden. Bei Spielesoftware gibt es viele Probleme, die mit der Interferenz zwischen Objekten verbunden sind, wie zum Beispiel das Problem einer Kollision zwischen Raketen und von Kämpfen in einem Schießspiel und einer Kollision zwischen Wagen in Autorennspielen. Das Interferenzprüfverfahren der vorliegenden Erfindung liefert somit ein leistungsfähiges Mittel zum Lösen dieser Probleme.
  • Wie oben beschrieben wurde, ist es gemäß der vorliegenden Erfindung möglich, die Interferenz zwischen nicht-konvexen Polyedern mit hoher Geschwindigkeit zu prüfen.
  • Außerdem ist es gemäß der vorliegenden Erfindung möglich, konvexe Hülsen, eine lineare Liste nahegelegener Punkte und hierarchische Sphären mit hoher Geschwindigkeit mit guter Effizienz als Vorverarbeitung für eine Interferenzprüfung zu erzeugen.
  • Gemäß der vorliegenden Erfindung ist es möglich, die Interferenz zwischen nicht-konvexen Polyedern mit hoher Geschwindigkeit zu prüfen, wenn sich die nicht-konvexen Polyeder eng annähern.
  • Gemäß der vorliegenden Erfindung ist es überdies möglich, die Interferenz zwischen Objekten effektiv zu prüfen, wenn sie stationär sind.
  • Da viele augenscheinlich sehr verschiedene Ausführungsformen der vorliegenden Erfindung geschaffen werden können, ohne von ihrem Umfang, wie in den beigefügten Ansprüchen definiert, abzuweichen, versteht es sich, dass die Erfindung nicht auf ihre spezifische Ausführungsform begrenzt ist, abgesehen davon, wie sie in den beigefügten Ansprüchen definiert ist.

Claims (7)

  1. Interferenzprüfverfahren zum Prüfen der Interferenz zwischen zwei Computergraphik-Objekten in der Gestalt von nicht-konvexen Polyedern, das umfasst: einen ersten Schritt zum Bedecken eines jeden der Polygone, die ein jedes der nicht-konvexen Polyeder bilden, mit einer Vielzahl von Blatt- oder Leaf-Sphären, die einen vorbestimmten Radius haben und die auf jedem Polygon angeordnet werden, und sequentiellen Einhüllen der Leaf-Sphären mit hierarchischen Sphären, um einen Binärbaum hierarchischer Einhüllungssphären zu erzeugen; einen zweiten Schritt zum Erhalten eines Paares nahegelegener Sphären zwischen den zwei Objekten durch Prüfen einer Interferenz zwischen Einhüllungssphären eines oberen Grades auf der Basis der Struktur des Binärbaums, Zerlegen der interferierenden Einhüllungssphären in Einhüllungssphären eines unteren Grades, Prüfen der Interferenz zwischen den Einhüllungssphären des unteren Grades und Wiederholen des Interferenzprüfprozesses und des Zerlegungsprozesses, bis keine Interferenz detektiert wird; einen dritten Schritt zum Erhalten eines Paares nahegelegener Polygone, das dem Paar nahegelegener Sphären entspricht; und einen vierten Schritt zum Prüfen der Interferenz zwischen dem Paar nahegelegener Polygone; dadurch gekennzeichnet, dass: der Radius der Leaf-Sphären bestimmt wird auf der Basis des Radius der Sphäre, die das entsprechende nicht-konvexe Polyeder einhüllt, und der Anzahl von Polygonen, die das nicht-konvexe Polyeder bilden, wobei der Radius der Leaf-Sphären desto kleiner ist, je kleiner die Anzahl von Polygonen ist, die das nicht-konvexe Polyeder bilden.
  2. Interferenzprüfverfahren nach Anspruch 1, ferner mit den Schritten zum Erzeugen einer konvexen Hülse für jedes der nicht-konvexen Polyeder und Prüfen der Interferenz der konvexen Hülse von einem Objekt mit der konvexen Hülse des anderen Objektes, bei dem ein Blasenkollisionsalgorithmus, der die zweiten und dritten Schritte enthält, ausgeführt wird, wenn die Distanz zwischen den konvexen Hülsen nicht mehr als einen vorgegebenen Wert ergibt.
  3. Interferenzprüfverfahren nach Anspruch 1, bei dem der vierte Schritt enthält: Wiederholen, nachdem das Paar nahegelegener Polygone erhalten ist, einer Interferenzprüfung für das Paar nahegelegener Polygone in einer vorbestimmten Anzahl von Malen; Aktualisieren des Paares nahegelegener Polygone gemäß einem Blasenkollisionsalgorithmus, der die zweiten und dritten Schritte enthält, jedes Mal, wenn die vorbestimmte Anzahl von Interferenzprüfungen für das Paar nahegelegener Polygone beendet ist; und Wiederholen der Interferenzprüfung für ein neues Paar nahegelegener Polygone.
  4. Interferenzprüfverfahren nach Anspruch 3, ferner mit den Schritten: Messen der Berechnungszeit bei dem Blasenkollisionsalgorithmus; und Verändern des Zyklus des Aktualisierungsprozesses des Paares nahegelegener Polygone auf der Basis der Berechnungszeit.
  5. Interferenzprüfverfahren nach Anspruch 3, ferner mit den Schritten: Überwachen des Bewegungsbetrages eines sich bewegenden Objektes; und Aktualisieren des Paares nahegelegener Polygone gemäß dem Blasenkollisionsalgorithmus selbst in der Mitte des Zyklus des Aktualisierungsprozesses des Paares nahegelegener Polygone, wenn der Bewegungsbetrag größer als ein vorgegebener Wert ist.
  6. Interferenzprüfverfahren nach Anspruch 3, ferner mit den Schritten: Überwachen der Bewegungsgeschwindigkeit eines sich bewegenden Objektes; und Aktualisieren des Paares nahegelegener Polygone gemäß dem Blasenkollisionsalgorithmus selbst in der Mitte des Zyklus des Aktualisierungsprozesses des Paares nahegelegener Polygone, wenn die Bewegungsgeschwindigkeit größer als eine vorgegebene Geschwindigkeit ist.
  7. Interferenzprüfverfahren nach Anspruch 3, ferner mit den Schritten: Messen der Distanz zwischen dem Polygonpaar; und Aktualisieren des Paares nahegelegener Polygone gemäß dem Blasenkollisionsalgorithmus selbst in der Mitte des Zyklus des Aktualisierungsprozesses des Paares nahegelegener Polygone, wenn das Verhältnis der gegenwärtigen Distanz und der vorhergehenden Distanz größer als ein vorgegebener Wert ist.
DE69636693T 1995-07-11 1996-06-26 Verfahren zur Interferenz-Überwachung Expired - Lifetime DE69636693T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP7174627A JP2915826B2 (ja) 1995-07-11 1995-07-11 干渉チェック装置
JP17462795 1995-07-11

Publications (2)

Publication Number Publication Date
DE69636693D1 DE69636693D1 (de) 2006-12-21
DE69636693T2 true DE69636693T2 (de) 2007-02-22

Family

ID=15981906

Family Applications (2)

Application Number Title Priority Date Filing Date
DE69636693T Expired - Lifetime DE69636693T2 (de) 1995-07-11 1996-06-26 Verfahren zur Interferenz-Überwachung
DE69626154T Expired - Lifetime DE69626154T2 (de) 1995-07-11 1996-06-26 Verfahren zur Interferenz-Überwachung

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE69626154T Expired - Lifetime DE69626154T2 (de) 1995-07-11 1996-06-26 Verfahren zur Interferenz-Überwachung

Country Status (4)

Country Link
US (1) US5943056A (de)
EP (2) EP0753837B1 (de)
JP (1) JP2915826B2 (de)
DE (2) DE69636693T2 (de)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3689226B2 (ja) * 1997-03-13 2005-08-31 富士通株式会社 分解経路生成装置
JP3034483B2 (ja) * 1997-04-21 2000-04-17 核燃料サイクル開発機構 オブジェクト探索方法およびその方法を用いた装置
US6091427A (en) * 1997-07-18 2000-07-18 International Business Machines Corp. Method and system for a true-scale motion path editor using time segments, duration and synchronization
US6108010A (en) * 1997-07-18 2000-08-22 International Business Machines Corp. Method and system for a true-scale motion path editor
US6111590A (en) * 1997-07-18 2000-08-29 International Business Machines Corp. Method and system for a true scale motion path editor to create motion paths as independent entities
US6054997A (en) * 1997-08-29 2000-04-25 Mitsubishi Electric Information Technology Center America, Inc. System and method for determining distances between polyhedrons by clipping polyhedron edge features against voronoi regions
JP3383563B2 (ja) * 1997-12-18 2003-03-04 富士通株式会社 物体移動シミュレーション装置
JP3654616B2 (ja) * 1997-12-19 2005-06-02 富士通株式会社 階層化ポリゴンデータ生成装置及び方法及び当該階層化ポリゴンデータを用いる三次元リアルタイム映像生成装置及び方法
JPH11272721A (ja) 1998-03-19 1999-10-08 Fujitsu Ltd 干渉チェック結果表示方法および干渉チェック結果表示装置ならびに干渉チェック結果表示プログラムが記録されたコンピュータ読取可能な記録媒体
US6853964B1 (en) 2000-06-30 2005-02-08 Alyn Rockwood System for encoding and manipulating models of objects
IL139995A (en) * 2000-11-29 2007-07-24 Rvc Llc System and method for spherical stereoscopic photographing
US8044953B2 (en) * 2002-06-28 2011-10-25 Autodesk, Inc. System for interactive 3D navigation for proximal object inspection
JP4156291B2 (ja) * 2002-07-26 2008-09-24 富士通株式会社 アニメーション作成/編集装置
US7454319B2 (en) * 2003-11-19 2008-11-18 Jun Wan System, method, and computer program product for determining wall thickness in graphic model
JP4689344B2 (ja) * 2005-05-11 2011-05-25 キヤノン株式会社 情報処理方法、情報処理装置
US7872665B2 (en) * 2005-05-13 2011-01-18 Micoy Corporation Image capture and processing
US7656403B2 (en) * 2005-05-13 2010-02-02 Micoy Corporation Image processing and display
US20070011121A1 (en) * 2005-06-03 2007-01-11 Jinbo Bi System and method for learning rankings via convex hull separation
US7986827B2 (en) * 2006-02-07 2011-07-26 Siemens Medical Solutions Usa, Inc. System and method for multiple instance learning for computer aided detection
US7565216B2 (en) * 2006-09-11 2009-07-21 Innovmetric Logiciels Inc. Clearance measurement of manufactured parts
JP5167767B2 (ja) * 2007-11-05 2013-03-21 株式会社ジェイテクト 工作機械の干渉検出装置
JP5169175B2 (ja) * 2007-11-27 2013-03-27 富士通株式会社 干渉チェック方法、計算機支援設計装置及び干渉チェック用プログラム
KR101420237B1 (ko) 2008-02-25 2014-07-17 삼성전자주식회사 이웃 포인트의 탐색이 용이한 3d 영상 처리 방법
WO2010048093A2 (en) * 2008-10-20 2010-04-29 Intel Corporation Graphics processing using culling on groups of vertices
US8296702B2 (en) * 2010-01-13 2012-10-23 International Business Machines Corporation Rectilinear covering method with bounded number of rectangles for designing a VLSI chip
JP4951111B2 (ja) * 2010-11-04 2012-06-13 株式会社東芝 設計支援装置、設計支援方法およびプログラム
JP5144785B2 (ja) * 2011-04-18 2013-02-13 ファナック株式会社 ロボットの着目部位と周辺物との干渉を予測する方法及び装置
US9092697B2 (en) * 2013-02-07 2015-07-28 Raytheon Company Image recognition system and method for identifying similarities in different images
US10521520B2 (en) * 2013-02-14 2019-12-31 Nocturnal Innovations LLC Highly scalable cluster engine for hosting simulations of objects interacting within a space
JP5967786B2 (ja) * 2013-12-18 2016-08-10 株式会社ソニー・インタラクティブエンタテインメント シミュレーション装置
US9928644B2 (en) * 2014-07-01 2018-03-27 Nvidia Corporation Method and apparatus for determining mutual intersection of multiple convex shapes
CN104801044B (zh) * 2015-05-12 2017-12-12 深圳市腾讯计算机系统有限公司 生成轨迹线顶点序列的方法和装置
US10231793B2 (en) 2015-10-30 2019-03-19 Auris Health, Inc. Object removal through a percutaneous suction tube
US9955986B2 (en) 2015-10-30 2018-05-01 Auris Surgical Robotics, Inc. Basket apparatus
US9949749B2 (en) 2015-10-30 2018-04-24 Auris Surgical Robotics, Inc. Object capture with a basket
DE102017215519A1 (de) 2017-09-05 2019-03-07 Robert Bosch Gmbh Verfahren und Vorrichtung zur Kollisionserkennung für ein Fahrzeug
TWI822729B (zh) 2018-02-06 2023-11-21 美商即時機器人股份有限公司 用於儲存一離散環境於一或多個處理器之一機器人之運動規劃及其改良操作之方法及設備
US11738457B2 (en) 2018-03-21 2023-08-29 Realtime Robotics, Inc. Motion planning of a robot for various environments and tasks and improved operation of same
CN109316781B (zh) * 2018-11-02 2021-03-19 四川大学 一种气泡层次可视化中气泡分离方法
US11392105B2 (en) * 2019-03-28 2022-07-19 Mitsubishi Electric Research Laboratories, Inc. System and method for generating optimal lattice tool paths
US11369386B2 (en) 2019-06-27 2022-06-28 Auris Health, Inc. Systems and methods for a medical clip applier
WO2020263949A1 (en) 2019-06-28 2020-12-30 Auris Health, Inc. Medical instruments including wrists with hybrid redirect surfaces
US11896330B2 (en) 2019-08-15 2024-02-13 Auris Health, Inc. Robotic medical system having multiple medical instruments
US10959792B1 (en) 2019-09-26 2021-03-30 Auris Health, Inc. Systems and methods for collision detection and avoidance
US11737845B2 (en) 2019-09-30 2023-08-29 Auris Inc. Medical instrument with a capstan
US11737835B2 (en) 2019-10-29 2023-08-29 Auris Health, Inc. Braid-reinforced insulation sheath
CN114901200A (zh) 2019-12-31 2022-08-12 奥瑞斯健康公司 高级篮式驱动模式
CN114901188A (zh) 2019-12-31 2022-08-12 奥瑞斯健康公司 动态滑轮系统
WO2022003485A1 (en) 2020-06-29 2022-01-06 Auris Health, Inc. Systems and methods for detecting contact between a link and an external object
US11357586B2 (en) 2020-06-30 2022-06-14 Auris Health, Inc. Systems and methods for saturated robotic movement
WO2022264338A1 (ja) * 2021-06-16 2022-12-22 ファナック株式会社 制御装置、干渉チェック装置、及び制御システム
CN114012726B (zh) * 2021-11-08 2023-07-04 南京航空航天大学 一种航天机械臂碰撞检测方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE456048B (sv) * 1982-02-24 1988-08-29 Philips Norden Ab Sett och anordning for att bestemma kollisionsrisken for tva inbordes rorliga kroppar
GB2196763A (en) * 1986-10-29 1988-05-05 Philips Electronic Associated Solid modeling
US4922430A (en) * 1987-10-30 1990-05-01 U.S. Philips Corporation Method and apparatus for controlling the movement of a guided object
JP2826138B2 (ja) * 1988-11-12 1998-11-18 株式会社豊田中央研究所 移動体の干渉チェック装置
US5056031A (en) * 1988-11-12 1991-10-08 Kabushiki Kaisha Toyota Chuo Kenyusho Apparatus for detecting the collision of moving objects
US5150452A (en) * 1989-07-28 1992-09-22 Megamation Incorporated Method and apparatus for anti-collision and collision protection for multiple robot system
US5444838A (en) * 1991-03-18 1995-08-22 Hewlett-Packard Company Computer system and method for interference checking of polyhedra using capping polygons
JPH0594500A (ja) * 1991-10-02 1993-04-16 Fujitsu Ltd Cadシステムにおける3次元形状検索方式
JP3053491B2 (ja) * 1992-03-10 2000-06-19 三菱電機株式会社 数値制御方法
JPH06259506A (ja) * 1993-03-10 1994-09-16 Toshiba Corp 3次元形状干渉チェック装置
US5347459A (en) * 1993-03-17 1994-09-13 National Research Council Of Canada Real time collision detection
US5675720A (en) * 1993-09-14 1997-10-07 Fujitsu Limited Method of searching for points of closest approach, and preprocessing method therefor
JP3316092B2 (ja) * 1993-09-14 2002-08-19 富士通株式会社 最接近点探索装置
JP3383862B2 (ja) * 1993-10-01 2003-03-10 株式会社豊田中央研究所 Nc加工用の工具経路生成方法およびその装置
JP3349787B2 (ja) * 1993-10-15 2002-11-25 株式会社ソニー・コンピュータエンタテインメント 描画データ作成装置及び描画データ作成方法

Also Published As

Publication number Publication date
EP1241628A2 (de) 2002-09-18
EP0753837A2 (de) 1997-01-15
US5943056A (en) 1999-08-24
EP1241628A3 (de) 2004-08-18
JP2915826B2 (ja) 1999-07-05
DE69626154T2 (de) 2003-06-12
DE69626154D1 (de) 2003-03-20
EP0753837B1 (de) 2003-02-12
JPH0927046A (ja) 1997-01-28
EP0753837A3 (de) 1998-01-07
EP1241628B1 (de) 2006-11-08
DE69636693D1 (de) 2006-12-21

Similar Documents

Publication Publication Date Title
DE69636693T2 (de) Verfahren zur Interferenz-Überwachung
DE60008397T2 (de) Benutzer emulation für datenaustausch beim rechnergestützten entwurf
DE69130198T2 (de) Bildanzeigesysteme
DE69700961T2 (de) Objektorientiertes verfahren und system zum zeichnen von 2d- und 3d-formen auf eine projektionsfläche
DE102016120763B4 (de) Verfahren zur kollisionsfreien Bewegungsplanung
DE68927781T2 (de) Geometrisches Modellierungsverfahren und -gerät
DE69329341T2 (de) Virtueller realitätsgenerator für finanznachrichten
DE69224499T2 (de) Dreidimensionale graphische Verarbeitung
DE112014000700B4 (de) Interferenzprüfgerät
DE69534977T2 (de) Biegemaschine mit einer Steuerung zur Erstellung und Ausführung eines Metallplattenbiegeplanes
DE69932768T2 (de) Verfahren und Vorrichtung zur Kollisionsüberprüfung von Objekten in Computersystemen
DE3608438A1 (de) Verfahren zum berechnen von freien gekruemmten flaechen mittels computergestuetztem design cad und computergestuetzter herstellung cam und numerischer steuerung nc
WO2019020818A1 (de) Effiziente programmierung von robotern für die bearbeitung von werkstücken mit verschiedenen varianten
DE102013112516A1 (de) Lehrpunktprogramm-auswahlverfahren für robotersimulator
WO2018099782A1 (de) Verfahren zur rechenzeiteffizienten kollisionsprüfung bei einer pfadplanung für ein fahrzeug
DE102015120118B4 (de) Werkzeugmaschine mit einer Werkzeugwegkurvenerzeugungsvorrichtung
EP3475936A1 (de) Verfahren zum überprüfen einer kollision zwischen zwei fahrerlosen transportfahrzeugen, fahrerloses transportfahrzeug und system mit mehreren fahrerlosen transportfahrzeugen
DE112020006045T5 (de) Formal sicheres symbolisches bestärkendes lernen anhand von visuellen eingaben
DE102022107249A1 (de) Modularisierung von Netzen zum Lernen von hochdimensionalen Roboteraufgaben
DE102022130341A1 (de) Punktmengen-störungsprüfung
DE112020005671T5 (de) Platzierungsunterstützungsverfahren, Verfahren zur Erzeugung eines erlernten Modells, Programm, Platzierungsunterstützungssystem, und Arbeitssystem
DE19817583B4 (de) Verfahren und System zur Datenverarbeitung für dreidimensionale Objekte
DE112005001095T5 (de) Anordnung und Verfahren für die relative Steuerung von Lastbewegungsaktuatoren
EP4121897B1 (de) Verfahren und systeme zum bereitstellen von synthetischen gelabelten trainingsdatensätzen und ihre anwendungen
DE102020103854B4 (de) Maschinelles Lernen einer erfolgreich abgeschlossenen Roboteranwendung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: SEEGER SEEGER LINDNER PARTNERSCHAFT PATENTANWAELTE