Mobile 3D-Spieleprogrammierung mit der Mobile 3D Graphics API (M3G) am Beispiel des Handyspieles "MobileBlocks"

Größe: px
Ab Seite anzeigen:

Download "Mobile 3D-Spieleprogrammierung mit der Mobile 3D Graphics API (M3G) am Beispiel des Handyspieles "MobileBlocks""

Transkript

1 Mobile 3D-Spieleprogrammierung mit der Mobile 3D Graphics API (M3G) am Beispiel des Handyspieles "MobileBlocks" Mobile 3D Gameprogramming with the Mobile 3D Graphics API (M3G) using the Example of the Mobile Game "MobileBlocks" Ulrich Voigt Diplomarbeit Betreuer: Prof. Dr. F. N. Rudolph Berlin,

2 II Danksagungen Ganz besonderer Dank gilt meiner Frau Dioné und meinen Kindern Minas und Lasse, die in den letzten Jahren aufgrund meines Studiums oft ohne mich auskommen mussten und mir verständnissvoll die Zeit gaben, die ich dafür brauchte. Ebenso bedanke ich mich bei meinen Eltern für die großzügige Unterstützung und die Ausdauer die sie dabei aufbringen.

3 III Kurzfassung Diese Diplomarbeit demonstriert am Beispiel des Spieles MobileBlocks, welche Möglichkeiten die Mobile 3D Graphics API zur Entwicklung von 3D Handyspielen bietet. Seitdem zu Beginn dieses Jahrhunderts Java fähige Mobiltelefone auf den Markt kamen, werden auch Spiele für sie entwickelt und erfreuen sich wachsender Beliebtheit. Inzwischen sind die Prozessoren und Speicher vieler Mobiltelefone leistungsstark genug, um auch die performanceintensiveren 3D Spiele auf Handys darstellen zu können. Die Mobile 3D Graphics API bietet mit ihren Funktionen und ihrer inzwischen weiten Verbreitung eine geeignete Plattform, dreidimensionale Inhalte für Mobiltelefone bereit zu stellen. Diese Arbeit beschreibt, wie M3G arbeitet und liefert mit dem selbst erstellten Spiel MobileBlocks ein Beispiel für die praktische Umsetzung ihrer Funktionen.

4 IV Inhaltsverzeichnis 1 Einleitung Problemstellung Aufgabenstellung und Zielsetzung Anwendungsentwicklung für Mobiltelefone Kategorien von Mobiltelefonen Mobile Anwendungsentwicklung Plattformabhängige Entwicklung Plattformunabhängige Entwicklung Entwicklung mobiler 3D Anwendungen OpenGL ES Mobile 3D Graphics API MascotCapsule API OpenGL ES for Java (JSR 239) Mathematische Grundlagen und Konzepte der 3D Programmierung Mathematische Grundlagen der 3D Programmierung Koordinatensysteme Vektoren und Punkte Homogene Koordinaten Matrizen Affine Transformationen Transformationen um einen Pivot Konzepte der 3D Computergraphik Geometrische Primitiven D Modelle Licht und Beleuchtung Texturen Kamera und Projektion Die Transformationspipeline Mobile 3D Graphics API M3G und OpenGL ES M3G - Features und Struktur M3G Konzepte Graphics3D Szenengraphen... 3

5 V Transformationen Animationen Animierte Mesh Objekte Laden externer Dateien und das M3G Dateiformat Geometrie- und Fragmentpipeline Das Handyspiel MobileBlocks Vorstellung des Spieles Spielsteuerung Aufbau und Klassenstruktur des Handyspieles MobileBlocks Rahmenklassen Spielinterne Klassenstruktur Zusammenfassung der 3D Elemente von MobileBlocks Literatur... 7 Index Glossar... 73

6 VI Abbildungsverzeichnis Abbildung 5-1: Drei Finger-Regel [PUL8.]... 1 Abbildung 5-2: Skalarprodukt zweier Vekoren [PUL8.] Abbildung 5-3: Kreuzprodukt zweier Vektoren [PUL8.] Abbildung 5-4: affine Transformationen [PUL8.] Abbildung 5-5: Geometrische Primitiven von OpenGL ES [PUL8.] Abbildung 5-6: Mesh aus verbundenen Dreiecken [PUL8.]... 2 Abbildung 5-7: Lichtreflexion auf Vertexbasis und auf Dreiecksbasis [SCH3.] Abbildung 5-8: Lichtquellen: Punktlicht, Richtungslicht und Spotlicht [PUL8.] Abbildung 5-9: Texturwrapping. Mitte clamp-to-edge, rechts repeat Wrapping [PUL8.] 23 Abbildung 5-1: Perspektivprojektion [HOE7.] Abbildung 5-11: Parallelprojektion [HOE7.] Abbildung 5-12: Transformationspipeline [MAL6.] Abbildung 6-1: M3G Klassenhierarchie [PUL8.] Abbildung 6-2: M3G Klassenhierarchie [PUL8.] Abbildung 6-3: Aufbau eines Mesh Objektes in M3G [PUL8.] Abbildung 6-4: Appearance Komponenten [PUL8.] Abbildung 6-5: Sprite3D, Appearance und Image2D [MOR7.] Abbildung 6-6: field of view, near plane und far plane eines Camera Objektes [MOR7.] Abbildung 6-7: Benutzung eines zusätzlichen Group Knotens zur Implementierung einer Rotation um einen Pivot und achsen-orientierter Skalierung [PUL8.] Abbildung 6-8: Zusammenhang der Klassen KeyframeSequence, AnimationTrack und AnimationController [MOR7.] Abbildung 6-9: Interpolationsmethoden [HOE7.] Abbildung 6-1: Eine Transformation des Bones bewirkt eine Skinverformung [HOE7.] 48 Abbildung 6-11: M3G Dateiformat [HOE7.]... 5 Abbildung 6-12: Referenz der Geometrie- und Fragmentpipeline von M3G (aus: M3G Javadoc) Abbildung 7-1: Icons zur Kamerasteuerung. Links: Translation, Mitte: Rotation, Rechts: Figurensteuerung... 56

7 VII Tabellenverzeichnis Tabelle 1: KeyframeSequence Interpolationsmethoden Tabelle 2: animierbare Eigenschaften in M3G ( animation targets )... 44

8 Einleitung 1 1 Einleitung Schon im Jahr 23 wurden mit der Entwicklung von OpenGL ES und der Mobile 3D Graphics API die Grundlagen geschaffen, auch 3D Anwendungen für Mobiltelefone zu erstellen und damit der Grundstein für die Entwicklung von 3D Handyspielen gelegt. Da die Mobiltelefone jedoch zu dieser Zeit noch wenig Rechenleistung und Speicher zur Verfügung stellten, war die Produktion von 3D Spielen höchstens für einzelne Handymodelle, in einem sehr eingeschränkten Umfang möglich. Dies hat sich mit der Entwicklung von Mobiletelefonen zu Smart Phones, also kleinen Taschencomputern, geändert. Inzwischen gibt es über 2 unterschiedliche Handys, welche die Mobile 3D Graphics API unterstützen 1 und auch das Angebot an 3D Spielen wird immer größer. Auch wenn heute 3D Handyspiele vielleicht noch eine Randerscheinung sein mögen, so zeigt doch die Entwicklung der Computer- und Konsolenspiele, dass erweiterte Fähigkeiten der jeweiligen Plattform gerade in Spielen genutzt werden und die Tendenz meistens hin zu einer realistischeren Darstellung der Spielwelten mittels 3D geht. Schon in wenigen Jahren wird die Masse der Mobiltelefone die gleichen Möglichkeiten bieten, die heute lediglich die neueren Smart Phones zur Verfügung stellen und spätestens dann werden die meisten Handyspiele, wie heute schon im Bereich der Computer- und Konsolenspiele, 3D Spiele sein. 1

9 Problemstellung 2 2 Problemstellung Will man ein 3D Handyspiel entwickeln, stellt sich zunächst die Frage, welche Möglichkeiten zur Verfügung stehen, um dies zu verwirklichen. Es ist notwendig, zu wissen, welche Technologien es dafür bereits gibt und welche Unterstützungen sie leisten, dem Ziel eines lauffähigen 3D Spieles näher zu kommen. Da Handyspiele zu einem, im Vergleich zu Computerund Konsolenspielen, niedrigen Preis angeboten werden, darf der Aufwand, der zur Erstellung eines solchen Spieles notwendig ist, einerseits nicht zu groß sein und andererseits sollte es eine größere Zahl von Mobiltelefonen geben, welche die zu Grunde liegende Technologie auch unterstützen. Schnell wird man bei der Suche nach 3D Technologien für Handys auf OpenGL ES und die Mobile 3D Graphics API stoßen. Doch was ist der Unterschied und welche der beiden Möglichkeiten ist diejenige, die das Potenzial hat, mit möglichst geringem Aufwand, möglichst viele Nutzer zu erreichen?

10 Aufgabenstellung und Zielsetzung 3 3 Aufgabenstellung und Zielsetzung Nahezu jedes auf dem Markt angebotene Handy unterstützt heutzutage die mobile Java Version Java ME und auf den meisten ist zusätzlich auch die Mobile 3D Graphics API installiert. Zwar unterstützen viele Geräte auch OpenGL ES, eine kleinere, für eingebettete Systeme optimierte Version des bekannten 3D Standards OpenGL, aber um diese Schnittstelle ansprechen zu können, muss die Anwendung meist auf Basis der jeweils zugrunde liegenden Plattform programmiert werden. Dies wiederspricht dem Anspruch einer möglichst großen Portabilität des Spieles. OpenGL ES ist eine Schnittstelle auf niedrigem, hardwarenahem Niveau, die, um sie als Basis für Anwendungen und Spiele effektiv einzusetzen, zunächst einmal in eine abstraktere und allgemeinere Engine gekapselt werden muss. Genau das macht die Mobile 3D Graphics API, so dass mit ihr bereits eine fertige und anwendbare 3D Engine vorliegt, die außerdem weit verbreitet ist. Jede 3D Engine bietet auf ihre eigene Art Unterstützung für die zu lösenden Probleme einer dreidimeanionalen Anwendung. Die Mobile 3D Graphics API verfolgt dabei ihre eigenen, eher objektorientierten Ansätze, die für viele 3D Programmierer aus dem Computer- oder Konsolenspielebereich eher ungewohnt sein werden. Diejenigen Programmierer, die zwar Java ME kennen, jedoch noch keine Erfahrung mit der Entwicklung von 3D Spielen haben, erhalten dank der Mobile 3D Graphics API einen relativ einfachen und vertrauten Einstieg in die Welt der 3D Programmierung. Trotzdem ist es notwendig zunächst einmal die Terminologie und die mathematischen Grundlagen einer graphischen 3D Anwendung zu verstehen. Daher werde ich, nach einem allgemeinem Überblick über die Möglichkeiten der Anwendungsentwicklung und speziell der 3D Entwicklung auf Mobiltelefonen, eine kurze Einführung in die Mathematik und Terminologie von graphischen 3D Anwendungen geben. Meine Arbeit erklärt danach die Funktionsweise von M3G, um im letzten Teil mit der Beschreibung des Handyspieles MobileBlocks ein Anwendungsbeispiel zu geben.

11 Anwendungsentwicklung für Mobiltelefone 4 4 Anwendungsentwicklung für Mobiltelefone In diesem Kapitel möchte ich eine kurze Einführung in die Möglichkeiten der Anwendungsentwicklung für Mobiltelefone geben. Zunächst werde ich die heute verfügbaren Handys grob kategorisieren, um danach unterschiedliche Betriebssysteme und Plattformen zu beschreiben. Am Ende dieses Kapitels gebe ich einen kurzen Abriss über die Möglichkeiten der 3D Anwendungsentwicklung für Mobiltelefone. 4.1 Kategorien von Mobiltelefonen Heutige Mobiltelefone lassen sich laut Pulli et. Al. grob in drei Kategorien einordnen: Basic Phones, Feature Phones und Smart Phones [PUL8.]. Obwohl es innerhalb der drei Kategorien große Variationsbreiten gibt, hilft die Einteilung dabei zu beurteilen, welche Möglichkeiten ein Handy für die Ausführung graphischer Anwendungen und insbesondere Spiele bietet. Die Entwicklung schreitet jedoch so schnell voran, dass heutige Smart Phones die Feature Phones von morgen sind und Anwendungen, die heute nur auf High End Smart Phones möglich sind, schon bald massentauglich werden (ebd.). Die Kategorie der Basic Phones ist für graphische Anwendungen nicht weiter interessant, da sie meist eine geschlossene Umgebung mit proprietären Betriebssystemen haben, deren Anwendungen lediglich von den Entwicklern der Handys selbst erstellt werden können. Außerdem ist diese Kategorie von Mobiltelefonen mit sehr geringen Prozessorkapazitäten und kleinen Displays mit geringer Auflösung ausgestattet. Die zweite Katgorie der Feature Phones dagegen bildet die Masse der Mobiltelefone in den Industrieländern, und die meisten von ihnen unterstützen mobile Java Anwendungen. Dies ermöglicht eine relativ einheitliche graphische Anwendungs- und Spieleentwicklung und bietet genügend Programmierschnittstellen für die meisten Multimediabedürfnisse, inklusive 3D Graphiken. Die Java Handys umspannen jedoch eine so große Bandbreite bezüglich Performance und zur Verfügung stehender Features, dass viel Zeit investiert wird, Anwendungen an die unterschiedlichen Gegebenheiten der einzelnen Geräte anzupassen (ebd.). Die dritte Kategorie der Smart Phones entwickelt sich schon jetzt zu vollwertigen, tragbaren Computern. Ihre Schlüsselfeatures sind große, scharfe und helle Farbdisplays, schnelle Prozessoren, viel Speicher und üppige Multimedia Ausstattungen. Einige der neueren Geräte beinhalten auch ausgewiesene 3D Hardwareunterstützung. Die Betriebssysteme lassen die Installation von Fremdanwendungen ebenso zu wie Java Anwendungen, und sowohl die Mobile 3D Graphics API, als auch OpenGL ES stehen meist für 3D Inhalte zur Verfügung (ebd.).

12 Anwendungsentwicklung für Mobiltelefone Mobile Anwendungsentwicklung Während in der Welt der Desktopcomputer lediglich drei Hauptfamilien von Betriebssystemen existieren, gibt es dutzende Betriebssysteme für Mobiltelefone. Traditionell waren alle Handy Betriebssysteme geschlossene Systeme, was bedeutet, dass lediglich die Hersteller Anwendungen für sie entwickeln und installieren konnten. Sie dienten ja auch hauptsächlich dem Zweck des Telephonierens. Dies hat sich mit der Entwicklung von Mobiltelefonen zu kleinen Taschencomputern geändert. Alle Anwendungen selbst zur Verfügung zu stellen bedeutet eine große und teure Entwicklungsaufgabe für einen einzelnen Hersteller, so dass erst durch das Öffnen der Handyplattformen die Bandbreite der verfügbaren Anwendungen deutlich wachsen konnte. Heute haben fast alle vertriebenen Mobiltelefone eine offene Entwicklungsumgebung, auch wenn für einige erst Zertifikate vom Hersteller benötigt werden, damit Anwendungen für sie erstellt werden dürfen. Beispiele für offene Plattformen sind Java, BREW/WIPI, Linux, Palm OS, Symbian OS und Windows Mobile (ebd.). In neuester Zeit sind noch das Apple iphone und Google s Android hinzugekommen Plattformabhängige Entwicklung Native Anwendungen, also Anwendungen, die direkt im Maschinen Code des Zielprozessors kompiliert wurden, haben den Vorteil, dass sie ihren Code direkt auf der Hardware des Zielgerätes ausführen können. Dadurch haben sie einerseits die Möglichkeit, auf alle geräteinternen Features zuzugreifen und können andererseits die maximale Performance erzielen. Der große Nachteil dieser Anwendungen ist die fehlende Portabilität auf andere Plattformen und die Gefahr, dass fehlerhafte Ausführungen der Programme das ganze System zum Absturz bringen können. Ich möchte hier nur ganz kurz die wichtigsten nativen Plattformen erwähnen Symbian OS Das zurzeit marktführende Betriebssystem für Smart Phones ist Symbian OS, der Firma Symbian, die jedoch zu Nokia gehört. Auf Basis von Symbian OS arbeiten die Benutzeroberflächen S6, S8, S9 und UIQ. Symbian OS wird aber nicht nur von Nokia verwand, sondern unter anderem auch von Sony Ericsson, Motorola und Siemens. Symbian OS unterstützt, ähnlich wie Desktop Betriebssysteme, Multithreading, präemptives Multitasking und Speicherschutz. Aufgrund der weiten Verbreitung von Symbian OS ist dieses Bertiebssystem auch in den Fokus von Virenprogrammierern gerückt. Durch Einführung eines Zertifikatsystems ist jedoch das Ausführen von unerwünschtem Code stark eingeschränkt worden. 2 Die native Programmiersprache von Symbian OS ist das Symbian C++. Besonderheiten des Symbian C++ sind ein strenges Exception Handling und Speichermanagement. Es bietet durch seine Klassenbibliotheken Zugriff auf unterschiedliche Features der Mobilfunkgeräte. 3 Aufgrund der weiten Verbreitung von Symbian OS und der Plattformen S6 und UIQ, welches die Touchscreen Variante von S6 darstellt, wird der Nachteil der geringen Portabilität der nativen Anwendungen bis zu einem gewissen Grad aufgefangen. Aus diesem Grund ist das Angebot von Symbian Anwendungen inclusive Spielen relativ groß. Insbesondere die von 2 3

13 Anwendungsentwicklung für Mobiltelefone 6 Nokia wiedererweckte Spieleplattform N-Gage baut auf Symbian OS auf und bietet hochwertige Handyspiele, zum Teil auch in 3D auf Basis von OpenGL ES, an Windows Mobile Microsofts Windows Mobile ist ein mobiles Betriebssystem, welches auf der Microsoft Win32 API basiert. Es wird vor allem auf PDAs aber auch für Smart Phones benutzt und ähnelt in seiner Oberfläche den Desktop Varianten von Windows. 5 Auch Windows Mobile ist weit verbreitet, wobei seine Anwendungsausrichtung jedoch deutlich stärker in Richtung Office Anwendungen tendiert. Eine eigene Spielplattform, wie N- Gage für Symbian Geräte gibt es hier daher nicht. Windows Mobile unterstützt auf vielen Geräten zur 3D Programmierung Direct3D 6, aber auch OpenGL ES Apple iphone Das iphone von Apple nutzt als Betriebssystem ein angepasstes Mac OS X für Flashspeicher. 8 Zur Entwicklung von iphone und ipod Touch Software ist man gezwungen, einen Macintosh Computer zu benutzen, wobei als Programmierspache Objective-C zum Einsatz kommt. Ein kostenloses SDK stellt Apple nebst der IDE Xcode nach einer Registrierung zur Verfügung. Auf das Mobiltelefon selbst darf jedoch nur signierte Software, so dass zur Entwicklung nur der Emulator zur Verfügung steht. Die Zahl der für das iphone zur Verfügung stehenden Anwendungen wächst sehr schnell, da das Interesse der Entwickler am Geschäft des iphones teilzuhaben scheinbar sehr groß ist. 9 Das iphone unterstützt OpenGL ES zur Entwicklung von 3D Software Android Das von der Open Handset Alliance entwickelte mobile Betriebssystem Android basiert auf dem Linux-Betriebssystem und nutzt als Programmiersprache Java. Die Laufzeitumgebung von Android basiert auf der Dalvik Virtual Machine, die ähnlich wie die Java VM funktioniert, jedoch eine Registermaschine darstellt. Anwendungen für Android werden in Java geschrieben und können mit dem Android SDK entwickelt werden. 11 Auch die Android Plattform unterstützt zur mobilen 3D Entwicklung OpenGL ES. 12 Momentan kann man in Deutschland noch kein Android Handy erwerben, in den USA ist jedoch inzwischen mit dem T-Mobile G1 das erste Mobiltelefon auf Basis der Android Plattform auf dem Markt Siehe: c t Magazin für Computertechnik Ausgabe 18/28 S.18ff

14 Anwendungsentwicklung für Mobiltelefone Plattformunabhängige Entwicklung Java Micro Edition Da heutzutage fast alle Mobiltelefone mit J2ME Unterstützung ausgeliefert werden, ist die Java Micro Edition inzwischen die am weitesten verbreitete Anwendungsplattform überhaupt [PUL8.]. Die Plattformunabhängigkeit von Java ME erlaubt es den Entwicklern Anwendungen zu erstellen, die auf den unterschiedlichsten Mobiltelefonen verwendbar sind. Zur Entwicklung von 3D Anwendungen stellt Java ME auf vielen Handys die M3G API zur Verfügung. Es gibt jedoch auch noch andere Klassenbibliotheken, die mit J2ME zusammen verwendbar sind und eine Schnittstelle zur 3D Programmierung bieten (siehe unten). Die Java Plattform stellt eine hervorragende Ergänzung für ein ansonsten geschlossenes System dar. Sie gewährleistet Sicherheit, Stabilität und Portabilität dank des Designs ihrer Virtual Machine, während die Kosten für Dokumentation und Support auf alle Firmen verteilt wird, die an der Java Standardisierung teilhaben (ebd.). Die sichere und robuste Architektur der Java Virtual Machine hat jedoch ihren Preis: Das Abschirmen der Anwendungen von der darunterliegenden Software und Hardware macht Low- Level Optimierungen unmöglich und bietet der Anwendung nur eingeschränkten Zugang zu den Features eines Mobiltelefons. Die Performance der Anwendungen kommt meist nicht an die einer nativen Anwendung heran. Es ist laut Pulli et. Al. ganz besonders auf mobilen Geräten kein Mythos, dass in Java programmierter Code langsamer ist als C und C++ (ebd.) Flash Lite Neben J2ME hat sich seit einiger Zeit auf vielen Mobiltelefonen die Unterstützung von Flash Lite etabliert. Flash Lite ist eine für mobile Geräte optimierte Version des Flash Players der Firma Adobe. Mit Hilfe der Programmiersprache Action Script lassen sich so auch interaktive Anwendungen wie Benutzeroberflächen, aber auch Spiele erstellen. Flash und auch Flash Lite benutzen dafür Vektorgrafiken, was eine Skalierung ohne Qualitätsverlust ermöglicht und eine Portierung auf unterschiedliche Geräte mit verschiedenen Displaygrößen vereinfacht. Neben der noch nicht so großen Verbreitung und geringer Soundunterstützung ist die schlechtere Performance aufgrund des größeren Rechenaufwands für Vektorgraphiken, ein Nachteil, den Flash Lite gegenüber Java ME bietet

15 Anwendungsentwicklung für Mobiltelefone Entwicklung mobiler 3D Anwendungen Die weltweit ersten Mobiltelefone mit einer eingebetteten 3D Engine wurden in Japan im Jahr 21 von der Firma J-Phone vertrieben [PUL8.]. Die Grafik Engine war eine frühe Version der Mascot Capsule Engine der Firma HI Coorporation. Der Hauptzweck dieser frühen Anwendungen war es, einfache 3D Objekte zu animieren (ebd.). Außerhalb Japans war das erste Mobiltelefon, welches 3D Grafiken unterstützte, das Nokia 341, welches im Jahr 22 in Europa vertrieben wurde. Es hatte noch einen monochromen Bildschirm mit einer Auflösung von lediglich 96x65 Pixeln, unterstützte aber schon alle essentiellen 3D Render Features und ähnelte der OpenGL ES Version 1. (ebd.). Andere frühe 3D Grafik Engines waren Swerve von Superscape, ExEn (Execution Engine) von InFusio, X-Forge von Fathammer und Mophun von Synegetics (ebd.). Es waren alles Middleware- und Spielengine Lösungen, die High-Level Features wie Animation, binäre Dateiformate und oftmals auch Eingabeverarbeitung und Sound unterstützten. Das Fehlen einer einheitlichen Plattform machte es jedoch schwer, genügend Marktsegmente zu besetzen, um gewinnbringend Anwendungen zu erstellen (ebd.). Im Jahr 22 gründete die Khronos Group, ein Standardisierungskonsortium zur Spezifizierung und Förderung mobiler Multimedia APIs, ein Komitee, um eine abgespeckte OpenGL Version für mobile Geräte zu entwickeln. In Konkurenz dazu bildete sich unter der Führung von Nokia eine Initiative, um eine High-Level 3D API für Java ME zu standardisieren. Beide Standards wurden Seite an Seite entwickelt und beeinflußten einander, da teilweise die gleichen Leute an beiden Projekten mitwirkten. Im Herbst 23 wurden sowohl OpenGL ES 1., als auch M3G 1. im Abstand von nur wenigen Monaten veröffentlicht. Ein Jahr später konnten dann die ersten Implementierungen auf Mobiltelefonen vertrieben werden (ebd.) OpenGL ES OpenGL ES ist eine kompakte Version des bekannten Grafikstandards OpenGL. Es handelt sich um eine Low-Level Rendering API, die auf die Bedürfnisse von eingebetteten Systemen angepasst ist. Die erste Vesion, OpenGL ES 1., hatte zum Ziel, eine extrem kompakte API zur Verfügung zu stellen, ohne dabei auf wichtige Features zu verzichten. Sie musste als volle Softwareimplementierung mit weniger als 5KB Code auskommen, jedoch gleichzeitig eine Hardwarebeschleunigung ermöglichen. Die grafischen Effekte, die von den Desktop Versionen bekannt waren, sollten dennoch zur Verfügung stehen (ebd.). Die spätere Version OpenGL ES 1.1 beinhaltete mehr Features zur Unterstützung von Hardwarebeschleunigung, die zusammen mit den ersten 3D Graphikchips verfügbar wurde. Die letzte Version, OpenGL ES 2., stellt eine völlig überarbeitete API zur Verfügung und ist nicht rückwärtskompatibel zu den 1.x Versionen. Die 1.x und 2.x Versionen koexistieren jedoch insofern, als dass alle OpenGL 2.x Geräte auch mit Version 1.1 Treibern ausgestattet werden (ebd.). Eine OpenGL ES unterstützende API ist EGL. Sie kümmert sich um die Integration von O- pengl ES in das zugrundeliegende System und managt Render Targets und Kontexte (ebd.).

16 Anwendungsentwicklung für Mobiltelefone Mobile 3D Graphics API Als die ersten Java fähigen Mobiltelefone im Jahr 2 auf den Markt kamen, wurde ersichtlich, dass die Performance und der Speicheroverhead von Java für Echtzeit 3D Anwendungen ungeeignet waren. Daraus ergab sich die Notwendigkeit, eine neue Standard API zu entwickeln, die so viele Berechnungen wie möglich in nativen Code auslagern konnte. M3G war eine völlig neue High-Level API, die Ideen aus früheren APIs wie Java 3D und OpenInventor entlehnte. Sie besteht aus einer Baumstruktur mit Knoten, welche die 3D Elemente kapseln. Die Knoten können so zu einem Szenengraphen verbunden werden, dass er die grafischen Objekte und ihre Beziehung zueinander repräsentiert. M3G ist so entworfen, dass es effizient auf Basis des OpenGL ES Renderers implementiert werden kann (ebd.). Da M3G das Hauptthema dieser Arbeit darstellt, werde ich mich weiter unten tiefgehend mit dieser Schnittstelle befassen MascotCapsule API MascotCapsule ist eine 3D Rendering Engine für mobile Geräte, die von der japanischen Firma HI Corporation entwickelt und 21 das erste Mal kommerziell genutzt wurde [HOE7.]. Die Version V4 bietet Unterstützung für M3G und ist rückwartskompatibel zu Version V3. Im Vergleich zu M3G bietet MascotCapsule weniger Features, ist aber gerade durch seine Einfachheit performanter. Version V3 überbrückt die Unterschiede zwischen älteren Geräten und solchen mit erweiterten Fähigkeiten (ebd.). Ähnlich wie M3G bietet MascotCapsule auch Unterstützung zum Laden von Binärdateien. Die 3D Daten werden hier in Modell Dateien mit der Endung.bac und Animationsdateien mit der Endung.tra aufgeteilt. Texturdaten werden als.bmp Dateien gespeichert und geladen (ebd.) OpenGL ES for Java (JSR 239) JSR 239, auch als JOGL (Java Bindings for OpenGL ES) bezeichnet, ist eine Java Spezifikation, deren Ziel es ist, OpenGL ES und EGL mobilem Java so direkt wie möglich zur Verfügung zu stellen. Es verspricht volle OpenGL ES Funktionalität für eine maximale Performance und Flexibilität. Die unterschiedlichen Versionen von OpenGL ES werden hier als eine Hierarchie von Java Schnittstellen präsentiert [PUL8.]. Als Java API erweitert JSR 239 die Fehlerbehandlungen von OpenGL ES mit zusätzlichen Exceptions, um potentielle Risiken für die Systemstabilität und -sicherheit auszuschalten. Bis jetzt ist die Anzahl der Handys, die JSR 239 unterstützen jedoch noch recht klein (z.b. Sony Ericsson Z75).

17 Mathematische Grundlagen und Konzepte der 3D Programmierung 1 5 Mathematische Grundlagen und Konzepte der 3D Programmierung Bevor ich die Funktionen der Mobile 3D Graphics API beschreibe, möchte ich einen kurzen Überblick auf die mathematischen Grundlagen der 3D Programmierung geben und anschließend einige grundlegende Konzepte der 3D Computergraphik vorstellen. 5.1 Mathematische Grundlagen der 3D Programmierung Koordinatensysteme Um Formen und Positionen zu definieren benötigt es eine Referenz. Diese stellt das Koordinatensystem zur Verfügung und definiert einen Raum. Den Ursprung eines Koordinatensystems bildet ein Punkt, während seine Achsen Richtungen darstellen. Dreidimensionale Koordinatensysteme haben drei Achsen, die normalerweise mit den Buchstaben x, y und z bezeichnet werden. Jede Achse hat eine Längeneinheit und ist senkrecht zu den anderen Achsen positioniert. Werden zunächst die x- und die y-achse senkrecht zueinander positioniert, dann gibt es zwei Möglichkeiten die z-achse anzulegen. Die Wahl der Positionierung der z- Achse entscheidet daher darüber, ob ein Koordinatensystem rechtshändig oder linkshändig orientiert ist. Die Rechtshändigkeit eines Koordinatensystems läßt sich mit der 3 Finger Regel überprüfen (siehe Abb. 5-1). Abbildung 5-1: Drei Finger-Regel [PUL8.] Mit Ausnahme des globalen Weltkoordinatensystems, wird ein Koordinatensystem immer in Bezug zu einem anderen Koordinatensystem gesetzt. So hat jedes 3D Objekt sein eigenes lokales Koordinatensystem, welches in Beziehung zu dem System des Raumes steht, der das Objekt umgibt [PUL8.].

18 Mathematische Grundlagen und Konzepte der 3D Programmierung Vektoren und Punkte Innerhalb eines 3D Koordinatensystems ist jede Position im Raum ein Punkt, der durch seine Koordinaten beschrieben werden kann. Ein Vektor dagegen ist eine Verschiebung, eine Differenz zwischen zwei Punkten. Ein Vektor hat keine Position, jedoch eine Richtung und eine Länge. Ähnlich wie Punkte können Vektoren durch Koordinaten beschrieben werden. Der Vektor v ab, der die Verschiebung von Punkt a nach Punkt b darstellt, hat die Koordinaten: v ab = [b x - a, b x y - a y, b z - a z ] Formel 1: Vektor v ab zwischen den Punkten a und b Ein Punkt lässt sich auch durch einen Vektor vom Ursprung zu dem Punkt selbst darstellen (ebd.). Die Summe zweier Vektoren bildet einen neuen Vektor. Vektoren können auch mit skalaren Werten multipliziert werden, wodurch sich die Länge des Vektors ändert: a v = [av, av, av ] x y z Formel 2: Multiplikation des Vektors v mit dem Skalar a Es gibt zwei Arten, Vektoren miteinander zu multiplizieren: Das Skalarprodukt und das Kreuzprodukt. Das Ergebnis des Skalarproduktes ist ein Skalar. Es lässt sich auf zwei verschiedene Arten darstellen: a b = a x b x + a y b y + a z b z a b = cos(θ ) a b Formel 3: zwei Darstellungen des Skalarproduktes Die erste Darstellung ist algebraisch und benutzt die Vektorkoordinaten. Die zweite ist geometrisch und basiert auf den Längen der Vektoren und dem kleinsten Winkel zwischen ihnen. Eine der wichtigsten Eigenschaften, die mit dem Winkel einhergehen, ist die, dass bei senkrecht zueinander stehenden Vektoren das Skalarprodukt ergibt (siehe Abb. 5-2).

19 Mathematische Grundlagen und Konzepte der 3D Programmierung 12 Abbildung 5-2: Skalarprodukt zweier Vekoren [PUL8.] Das Kreuzprodukt zwischen zwei Vektoren existiert nur im dreidimensionalen Koordinatensystem. Aus ihm entsteht ein neuer Vektor. a b = [ aybz azby, azbx axbz, axby a ybx ] Formel 4: Kreuzprodukt zweier Vektoren a und b Der durch das Kreuzprodukt der Vektoren entstandene Vektor ist senkrecht zu den Vektoren a und b (siehe Abb. 5-3). Die Länge des neuen Vektoren entspricht sin(θ ) a b. Sind a und b parallel, dann ist seine Länge. Wird die Multiplikation umgekehrt, dann ändert sich das Vorzeichen des Ergebnisses (ebd). Abbildung 5-3: Kreuzprodukt zweier Vektoren [PUL8.] Homogene Koordinaten Es kann sehr verwirrend sein, Punkte und Richtungen durch Vektoren mit drei Koordinaten zu repräsentieren. Homogene Koordinaten können diesen Unterschied besser darstellen: Es wird einfach eine vierte Koordinate (w) hinzugefügt. Ist w =, dann handelt es sich um eine Richtung, ansonsten um einen Punkt (ebd.). Um einen Punkt mit den homogenen Koordinaten [h x, h y, h z, h w ] in einen 3D Punkt umzurechenen, dividiert man die Komponenten durch den Wert von h w. Ist h w =, dann erhält man einen Punkt, der eine unendliche Entfernung besitzt. Dies wird als die Richtung zum Punkt [h x, h y, h z ] interpretiert. Umgekehrt kann man den Punkt [hx, hy, hz] durch hinzufügen der

20 Mathematische Grundlagen und Konzepte der 3D Programmierung 13 vierten Komponente homogenisieren: [p x, p y, p z, 1]. Tatsächlich kann man jeden Wert der ungleich Null ist für w benutzen, um den gleichen Punkt zu erhalten: [wp x, wp y, wp z, w] (ebd.). Es läßt sich auch erkennen, dass für normalisierte homogene Koordinaten (w ist entweder oder 1) aus der Differenz zweier Punkte ein Richtungsvektor entsteht (w wird zu 1-1=). Aus der Addition eines Richtungsvektors zu einem Punkt entsteht dagegen wieder ein Punkt, der entgegen dem alten um die Werte des Vektors verschoben wurde (w wird zu 1+=1). Es gibt noch einen weiteren, wichtigeren Grund, für die Benutztung homogener Koordinaten: Sie erlauben es, alle linearen 3D Transformationen mit einer 4x4 Matrix, die auf 4x1 homogenen Vektoren basiert, auszudrücken. Diese Darstellung ist so mächtig, dass sich mit ihr Verschiebungen, Rotationen, Skalierungen, Scherungen und sogar Perspektiv- und Parallelprojektionen ausdrücken lassen (ebd.) Matrizen Eine 4x4 Matrix M besteht aus den Komponenten m ij, wobei i die Reihe bezeichnet und j die Spalte: M m m = m m m m m m m m m m m m m m Formel 5: 4x4 Matrix Ein Spaltenvektor v besitzt die Komponenten v i : v v = v v3 [ v v v v ] T 1 v = Formel 6: Spaltenvektor und transponierte Form Die Transponierung wandelt einen Spaltenvektor in einen Reihenvektor um, und umgekehrt. Bei einer Matrix M=[m ij ] bewirkt eine Transponierung eine Spiegelung an der Diagonalen, das heißt, die Spalten werden zu den Reihen: M T =[m ji ] (ebd.) Matrix Produkte Das Produkt einer Matrix mit einem Vektor erzeugt einen neuen Vektor. Sowohl Richtungen als auch Positionen werden durch die Multiplikation des entsprechenden homogenen Vektors v mit einer Transformationsmatrix M transformiert: v =Mv. Jede Komponente des Spaltenvektors v ergibt sich durch ein Skalarprodukt einer Reihe von M mit v, wobei M genauso viele Spalten haben muss, wie v Reihen:

OpenGL. (Open Graphic Library)

OpenGL. (Open Graphic Library) OpenGL (Open Graphic Library) Agenda Was ist OpenGL eigentlich? Geschichte Vor- und Nachteile Arbeitsweise glscene OpenGL per Hand Debugging Trend Was ist OpenGL eigentlich? OpenGL ist eine Spezifikation

Mehr

Workshop: Einführung in die 3D-Computergrafik. Julia Tolksdorf Thies Pfeiffer Christian Fröhlich Nikita Mattar

Workshop: Einführung in die 3D-Computergrafik. Julia Tolksdorf Thies Pfeiffer Christian Fröhlich Nikita Mattar Workshop: Einführung in die 3D-Computergrafik Julia Tolksdorf Thies Pfeiffer Christian Fröhlich Nikita Mattar 1 Organisatorisches Tagesablauf: Vormittags: Theoretische Grundlagen Nachmittags: Bearbeitung

Mehr

Szenengraph-Architekturen im Kontext von VR- und AR-Anwendungen

Szenengraph-Architekturen im Kontext von VR- und AR-Anwendungen Szenengraph-Architekturen - 1 Szenengraph-Architekturen im Kontext von VR- und AR-Anwendungen Hauptseminar Medieninformatik Christina Eicher 10. Mai 2004 Inhalt Szenengraph-Architekturen - 2 Teil 1: Szenengraphen

Mehr

Computer Vision I. Nikos Canterakis. Lehrstuhl für Mustererkennung, Universität Freiburg

Computer Vision I. Nikos Canterakis. Lehrstuhl für Mustererkennung, Universität Freiburg Nikos Canterakis Lehrstuhl für Mustererkennung, Universität Freiburg Gliederung 6 Endliche Kameras Die Lochkamera Die Projektive Kamera Die projektive Kamera Spalten von P Zeilen von P Hauptpunkt und Hauptachse

Mehr

Erinnerung. Arbeitsschritte der Computergraphik. Modellierung. Animation. Rendering. Ausgabemedium. Generierung

Erinnerung. Arbeitsschritte der Computergraphik. Modellierung. Animation. Rendering. Ausgabemedium. Generierung Erinnerung Arbeitsschritte der Computergraphik Modellierung Animation Generierung Ausgabemedium Graphik/-Pipeline Wandelt die Beschreibung einer Szene im dreidimensionalen Raum in eine zweidimensionale

Mehr

Smartphone - Betriebssysteme. Smartphone - Betriebssysteme

Smartphone - Betriebssysteme. Smartphone - Betriebssysteme Smartphone - Betriebssysteme Peter Rami - Graz, 28.04.2009 Inhalt Smartphone Symbian OS Windows Mobile BlackBerry OS iphone OS Android Marktanteile & Ausblick Smartphone - Betriebssysteme Peter Rami -

Mehr

2.2 Projektionen und Kameramodelle

2.2 Projektionen und Kameramodelle Graphikprog. GRUNDLEGENDE VERFAHREN UND TECHNIKEN. Projektionen und Kameramodelle Nachdem alle Objekte einer Szenerie mittels der besprochenen Transformationen im D-Weltkoordinatensystem platziert sind,

Mehr

Kapitel 0. Einführung. 0.1 Was ist Computergrafik? 0.2 Anwendungsgebiete

Kapitel 0. Einführung. 0.1 Was ist Computergrafik? 0.2 Anwendungsgebiete Kapitel 0 Einführung 0.1 Was ist Computergrafik? Software, die einen Computer dazu bringt, eine grafische Ausgabe (oder kurz gesagt: Bilder) zu produzieren. Bilder können sein: Fotos, Schaltpläne, Veranschaulichung

Mehr

:= Modellabbildung. Bildsynthese (Rendering) Bildsynthese

:= Modellabbildung. Bildsynthese (Rendering) Bildsynthese Geometrisches Modell bestehend aus Datenstrukturen zur Verknüpfung geometrischer Primitive, welche eine Gesamtszene beschreiben Bildsynthese := Modellabbildung Pixelbasiertes Modell zur Darstellung eines

Mehr

Computer-Graphik I Transformationen & Viewing

Computer-Graphik I Transformationen & Viewing lausthal Motivation omputer-raphik I Transformationen & Viewing Man möchte die virtuelle 3D Welt auf einem 2D Display darstellen. Zachmann lausthal University, ermany zach@in.tu-clausthal.de. Zachmann

Mehr

Vom Smart Dust zum Smart Phone: Verfügbare SensingPlattformen. Adrian Friedli adrianfriedli@student.ethz.ch

Vom Smart Dust zum Smart Phone: Verfügbare SensingPlattformen. Adrian Friedli adrianfriedli@student.ethz.ch Vom Smart Dust zum Smart Phone: Verfügbare SensingPlattformen Adrian Friedli adrianfriedli@student.ethz.ch Verteilte Systeme Seminar, ETH Zürich, 24. Februar 2009 Übersicht Sensornetze Mobiltelefone Sensornetze

Mehr

2D-Transformationen. Kapitel 6. 6.1 Translation. 6.2 Skalierung

2D-Transformationen. Kapitel 6. 6.1 Translation. 6.2 Skalierung Kapitel 6 2D-Transformationen Mit Hilfe von Transformationen ist es möglich, die Position, die Orientierung, die Form und die Größe der grafischen Objekte zu manipulieren. Transformationen eines Objekts

Mehr

Universität Augsburg. 20. April 2012. B. Möller (U. Augsburg) Computergraphik SS12 20. April 2012 1 / 6

Universität Augsburg. 20. April 2012. B. Möller (U. Augsburg) Computergraphik SS12 20. April 2012 1 / 6 Kapitel 1 Einführung B. Möller Universität Augsburg 20. April 2012 B. Möller (U. Augsburg) Computergraphik SS12 20. April 2012 1 / 6 Begriffsdefinition Computergrafik: realistische Darstellung realer oder

Mehr

Geschäftsbereich Mobile Services Was ist Android?

Geschäftsbereich Mobile Services Was ist Android? Geschäftsbereich Mobile Services Was ist Android? Hinter Hoben 149 53129 Bonn www.visionera.de Ansprechpartner: Arno Becker arno.becker@visionera.de +49 228 555 1111 +49 160 98965856 Einleitung Android

Mehr

Seminar SS 2006 Intelligent Virtual Characters

Seminar SS 2006 Intelligent Virtual Characters Seminar SS 2006 Intelligent Virtual Characters Leiter: Dr. Michael Kipp Johannes Tran Character Animation Materials by Jeff Lander, John Lasseter and Rick Parent Überblick Einführung: Bewegung, Computer

Mehr

4. Kapitel 3D Engine Geometry

4. Kapitel 3D Engine Geometry 15.11.2007 Mathematics for 3D Game Programming & Computer Graphics 4. Kapitel 3D Engine Geometry Anne Adams & Katharina Schmitt Universität Trier Fachbereich IV Proseminar Numerik Wintersemester 2007/08

Mehr

OpenGL als API für Augmented und Virtual Reality

OpenGL als API für Augmented und Virtual Reality OpenGL als API für Augmented und Virtual Reality Tobias Lang langt@cip.ifi.lmu.de Hausarbeit im Hauptseminar Augmented und Virtual Reality Inhaltsverzeichnis 1. Einleitung... 3 2. Was ist OpenGL... 3 3.

Mehr

Mobile Applications. Adrian Nägeli, CTO bitforge AG

Mobile Applications. Adrian Nägeli, CTO bitforge AG Mobile Applications Adrian Nägeli, CTO bitforge AG Inhalt Vorstellung Marktübersicht Entwicklung Adrian Nägeli Dipl. Inf.-Ing FH Seit 2005 bei bitforge bitforge AG Standort Rapperswil-Jona Gründung 2004

Mehr

Zwischenvortrag zum Entwicklungsstand der Bachelor-Arbeit. Direct 3D-Output für ein Rendering Framework

Zwischenvortrag zum Entwicklungsstand der Bachelor-Arbeit. Direct 3D-Output für ein Rendering Framework Zwischenvortrag zum Entwicklungsstand der Bachelor-Arbeit Direct 3D-Output für ein Rendering Framework von Benjamin Betting unter der Betreuung von Daniel Schiffner 1 Gliederung Kapitel I und II: Motivation,Einführung,Grundlagen

Mehr

Raytracing. Schlussbericht. Jonas Lauener 1995, Áedán Christie 1997 Melvin Ott 1997, Timon Stampfli 1997

Raytracing. Schlussbericht. Jonas Lauener 1995, Áedán Christie 1997 Melvin Ott 1997, Timon Stampfli 1997 Raytracing Schlussbericht Jonas Lauener 1995, Áedán Christie 1997 Melvin Ott 1997, Timon Stampfli 1997 bei Betreuer Marco Manzi, Institut für Informatik und angewandte Mathematik Inhalt Fragestellung...

Mehr

C++ und mobile Plattformen

C++ und mobile Plattformen Dieser Artikel stammt aus dem Magazin von C++.de (http://magazin.c-plusplus.de) C++ und mobile Plattformen Mit diesem Artikel möchte ich euch einen kurzen Überblick über die verschiedenen Plattformen für

Mehr

Installation. Arbeiten mit der MATLAB-Entwicklungsumgebung. MATLAB als Taschenrechner mit Matrix- und Vektorrechnung.

Installation. Arbeiten mit der MATLAB-Entwicklungsumgebung. MATLAB als Taschenrechner mit Matrix- und Vektorrechnung. Installation. Arbeiten mit der MATLAB-Entwicklungsumgebung. MATLAB als Taschenrechner mit Matrix- und Vektorrechnung. Die heutige Sitzung dient dem ersten Kennenlernen von MATLAB. Wir wollen MATLAB zuerst

Mehr

Einführung in Betriebssysteme

Einführung in Betriebssysteme Einführung in Betriebssysteme APPLE ios Entwicklung von ios Entwickelt auf der Basis von MacOS X UNIX Vorgestellt am 9.1.2007 Zusammen mit iphone Markenname von Cisco Internetwork Operating System Für

Mehr

Computergraphik Grundlagen

Computergraphik Grundlagen Computergraphik Grundlagen IV. Koordinatensysteme und geometrische Transformationen Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik Inhalt Lernziele 1. Skalare Punkte und Vektoren 2.

Mehr

Computergraphik Grundlagen

Computergraphik Grundlagen Computergraphik Grundlagen V. Die Rendering-Pipeline Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik Inhalt Lernziele 1. Der Begriff Rendering 2. Die Rendering-Pipeline Geometrische Modellierung

Mehr

Einführung in die Cross-Plattform Entwicklung Das Intel App Framework

Einführung in die Cross-Plattform Entwicklung Das Intel App Framework Einführung in die Cross-Plattform Entwicklung Das Intel App Framework Einführung Dieses Hands-on-Lab (HOL) macht den Leser mit dem Intel App Framework vom Intel XDK vertraut. Es wird Schritt für Schritt

Mehr

App-Entwicklung für Android

App-Entwicklung für Android App-Entwicklung für Android Einleitung - Systemarchitektur Hochschule Darmstadt WS15/16 1 Inhalt Historie Systemarchitektur Sandbox 2 Motivation Kontra Pro Limitierte Größe Begrenzte Ressourcen Kein Standardgerät

Mehr

"rendern" = ein abstraktes geometrisches Modell sichtbar machen

rendern = ein abstraktes geometrisches Modell sichtbar machen 3. Grundlagen des Rendering "rendern" = ein abstraktes geometrisches Modell sichtbar machen Mehrere Schritte: Sichtbarkeitsberechnung Beleuchtungsrechnung Projektion Clipping (Abschneiden am Bildrand)

Mehr

1. Software-Plattform Android Android. Was ist Android? Bibliotheken, Laufzeitumgebung, Application Framework

1. Software-Plattform Android Android. Was ist Android? Bibliotheken, Laufzeitumgebung, Application Framework 1. Software-Plattform Android Android Was ist Android? Plattform und Betriebssystem für mobile Geräte (Smartphones, Mobiltelefone, Netbooks), Open-Source Linux-Kernel 2.6 Managed Code, Angepasste Java

Mehr

Planare Projektionen und Betrachtungstransformation. Quelle: Angel (2000)

Planare Projektionen und Betrachtungstransformation. Quelle: Angel (2000) Planare Projektionen und Betrachtungstransformation Quelle: Angel (2) Gliederung Einführung Parallelprojektionen Perspektivische Projektionen Kameramodell und Betrachtungstransformationen Mathematische

Mehr

4 Vorlesung: 21.11. 2005 Matrix und Determinante

4 Vorlesung: 21.11. 2005 Matrix und Determinante 4 Vorlesung: 2111 2005 Matrix und Determinante 41 Matrix und Determinante Zur Lösung von m Gleichungen mit n Unbekannten kann man alle Parameter der Gleichungen in einem rechteckigen Zahlenschema, einer

Mehr

Cross-Platform Apps mit HTML5/JS/CSS/PhoneGap

Cross-Platform Apps mit HTML5/JS/CSS/PhoneGap Cross-Platform Apps mit HTML5/JS/CSS/PhoneGap Proseminar Objektorientiertes Programmieren mit.net und C# Florian Schulz Institut für Informatik Software & Systems Engineering Einführung Was hat Cross-Plattform

Mehr

White Paper. Embedded Treiberframework. Einführung

White Paper. Embedded Treiberframework. Einführung Embedded Treiberframework Einführung White Paper Dieses White Paper beschreibt die Architektur einer Laufzeitumgebung für Gerätetreiber im embedded Umfeld. Dieses Treiberframework ist dabei auf jede embedded

Mehr

Vorlesung Objektorientierte Softwareentwicklung. Kapitel 0. Java-Überblick

Vorlesung Objektorientierte Softwareentwicklung. Kapitel 0. Java-Überblick Vorlesung Objektorientierte Softwareentwicklung Sommersemester este 2008 Kapitel 0. Java-Überblick Was sind die Ziele? Warum Java? Komplexe Anwendungen e-business verteilt zuverlässig sicher mobil persistent

Mehr

NX für die digitale Produktentwicklung:

NX für die digitale Produktentwicklung: StS.fact sheet NX Virtual Studio NX für die digitale Produktentwicklung: Als vollständige Lösung für die digitale Produktentwicklung bietet die NX Software integrierte und technologisch führende Funktionen

Mehr

3D-Algebra Version 2

3D-Algebra Version 2 3D-Algebra Version 2 Fakultät für Mathematik und Informatik Datenbanksysteme für neue Anwendungen FernUniversität in Hagen 19.November 2015 c 2015 FernUniversität in Hagen Das Ziel Repräsentation von Punkten,

Mehr

Computer Graphik. Mitschrift von www.kuertz.name

Computer Graphik. Mitschrift von www.kuertz.name Computer Graphik Mitschrift von www.kuertz.name Hinweis: Dies ist kein offizielles Script, sondern nur eine private Mitschrift. Die Mitschriften sind teweilse unvollständig, falsch oder inaktuell, da sie

Mehr

Softwareprojekt Spieleentwicklung

Softwareprojekt Spieleentwicklung Softwareprojekt Spieleentwicklung Prototyp I (2D) Prototyp II (3D) Softwareprojekt 12.04. 19.04. 26.04. 03.05. 31.05. Meilenstein I 28.06. Meilenstein II Prof. Holger Theisel, Tobias Günther, OvGU Magdeburg

Mehr

Präsentation Von Laura Baake und Janina Schwemer

Präsentation Von Laura Baake und Janina Schwemer Präsentation Von Laura Baake und Janina Schwemer Gliederung Einleitung Verschiedene Betriebssysteme Was ist ein Framework? App-Entwicklung App-Arten Möglichkeiten und Einschränkungen der App-Entwicklung

Mehr

ax 2 + bx + c = 0, (4.1)

ax 2 + bx + c = 0, (4.1) Kapitel 4 Komplexe Zahlen Wenn wir uns auf die reellen Zahlen beschränken, ist die Operation des Wurzelziehens (also die Umkehrung der Potenzierung) nicht immer möglich. Zum Beispiel können wir nicht die

Mehr

NÜTZLICHE TIPPS FÜR OPTIMALE SCANS

NÜTZLICHE TIPPS FÜR OPTIMALE SCANS Bedingungen, um gute Scans zu erhalten Die Faktoren, von denen das Ergebnis eines Scans abhängt, sind einerseits die Umgebung sowie die Konfiguration und Kalibrierung des Scanners, aber auch das zu scannende

Mehr

PDF Dateien für den Druck erstellen

PDF Dateien für den Druck erstellen PDF Dateien für den Druck erstellen System Mac OS X Acrobat Version 6 Warum eigentlich PDF? PDF wird nicht nur in der Druckwelt immer wichtiger. Das Internet ist voller Informationsschriften im PDF-Format,

Mehr

1 Einleitung. 1.1 Caching von Webanwendungen. 1.1.1 Clientseites Caching

1 Einleitung. 1.1 Caching von Webanwendungen. 1.1.1 Clientseites Caching 1.1 Caching von Webanwendungen In den vergangenen Jahren hat sich das Webumfeld sehr verändert. Nicht nur eine zunehmend größere Zahl an Benutzern sondern auch die Anforderungen in Bezug auf dynamischere

Mehr

Graphische Datenverarbeitung und Bildverarbeitung

Graphische Datenverarbeitung und Bildverarbeitung Graphische Datenverarbeitung und Bildverarbeitung Hochschule Niederrhein Clippen in 2D und 3D Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 1 Einordnung in die Inhalte der Vorlesung Einführung

Mehr

Photonik Technische Nutzung von Licht

Photonik Technische Nutzung von Licht Photonik Technische Nutzung von Licht Raytracing und Computergraphik Überblick Raytracing Typen von Raytracern z-buffer Raytracing Lichtstrahlen-Verfolgung (engl. ray tracing): Berechnung von Lichtstrahlen

Mehr

Embedded Computing Conference 2014 Embedded UI Qt5

Embedded Computing Conference 2014 Embedded UI Qt5 Embedded Computing Conference 2014 Embedded UI Qt5 2 Embedded User Interfaces in the Smartphone Age The Power of Qt5 and the QNX OS Qt Vorstellung 3 Qt ( cute ) Hat eine lange Geschichte (Beginn der Entwicklung:

Mehr

Mobile: Die Königsfrage

Mobile: Die Königsfrage Mobile: Die Königsfrage - Native App,Mobile Website oder doch Responsive Design? - Native App oder Mobile Website? Wer am Boom der mobilen Anwendungen teilhaben möchte, hat im Prinzip zwei Möglichkeiten:

Mehr

3D Grafik mit TrueSpace 5. Crashkurs März 2013. März 2013 Einführung in die 3D-Bearbeitung - 2012 Frank Kaden 1/26

3D Grafik mit TrueSpace 5. Crashkurs März 2013. März 2013 Einführung in die 3D-Bearbeitung - 2012 Frank Kaden 1/26 3D Grafik mit TrueSpace 5 Crashkurs März 2013 März 2013 Einführung in die 3D-Bearbeitung - 2012 Frank Kaden 1/26 3D Grafik mit TrueSpace dreidimensionales Visualisierungs-, Modellier-, Animationsprogramm

Mehr

Kapitel 6,»Objektorientierte Programmierung«, widmet sich der objektorientierten Programmierung mit Python.

Kapitel 6,»Objektorientierte Programmierung«, widmet sich der objektorientierten Programmierung mit Python. 1.3 Aufbau des Buchs lichkeiten offen. Auf die Unterschiede der beiden Versionen gehe ich besonders ein, sodass ein späterer Umstieg von der einen zur anderen Version leichtfällt. Erste Zusammenhänge werden

Mehr

Walkabout: Location Based Services mit Android und dem Google Phone

Walkabout: Location Based Services mit Android und dem Google Phone Walkabout: Location Based Services mit Android und dem Google Phone Teilbereich 1: Die Android Plattform für mobile Geräte (Software) Von: Sebastian Schul Inhalt Einleitung Was ist Android Exkurs: Wie

Mehr

(7) Normal Mapping. Vorlesung Computergraphik II S. Müller. Dank an Stefan Rilling U N I V E R S I T Ä T KOBLENZ LANDAU

(7) Normal Mapping. Vorlesung Computergraphik II S. Müller. Dank an Stefan Rilling U N I V E R S I T Ä T KOBLENZ LANDAU (7) Normal Mapping Vorlesung Computergraphik II S. Müller Dank an Stefan Rilling Einleitung Die Welt ist voller Details Viele Details treten in Form von Oberflächendetails auf S. Müller - 3 - Darstellung

Mehr

u + v = v + u. u + (v + w) = (u + v) + w. 0 V + v = v + 0 V = v v + u = u + v = 0 V. t (u + v) = t u + t v, (t + s) u = t u + s u.

u + v = v + u. u + (v + w) = (u + v) + w. 0 V + v = v + 0 V = v v + u = u + v = 0 V. t (u + v) = t u + t v, (t + s) u = t u + s u. Universität Stuttgart Fachbereich Mathematik Prof. Dr. C. Hesse PD Dr. P. H. Lesky Dipl. Math. D. Zimmermann Msc. J. Köllner FAQ 3 Höhere Mathematik I 4..03 el, kyb, mecha, phys Vektorräume Vektorräume

Mehr

y x x y ( 2x 3y + z x + z

y x x y ( 2x 3y + z x + z Matrizen Aufgabe Sei f R R 3 definiert durch ( ) x 3y x f = x + y y x Berechnen Sie die Matrix Darstellung von f Aufgabe Eine lineare Funktion f hat die Matrix Darstellung A = 0 4 0 0 0 0 0 Berechnen Sie

Mehr

Computer Vision: 3D-Geometrie. D. Schlesinger () Computer Vision: 3D-Geometrie 1 / 17

Computer Vision: 3D-Geometrie. D. Schlesinger () Computer Vision: 3D-Geometrie 1 / 17 Computer Vision: 3D-Geometrie D. Schlesinger () Computer Vision: 3D-Geometrie 1 / 17 Lochkamera Modell C Projektionszentrum, Optische Achse, Bildebene, P Hauptpunkt (optische Achse kreuzt die Bildebene),

Mehr

Vortrag Postscript, Einführung, Koordinatgeometrie und Prozeduren

Vortrag Postscript, Einführung, Koordinatgeometrie und Prozeduren Vortrag Postscript, Einführung, Koordinatgeometrie und Prozeduren 03.05.2006 1 2 Punkte und Vektoren Einfache Parallelogramme Vektorprojektion Rotation 3 Variablen Prozeduren 4 3 Grundlegende Fragen zum

Mehr

Python ist leicht zu erlernen, unterstützt mehrere Programmierparadigmen und ist klar strukturiert.

Python ist leicht zu erlernen, unterstützt mehrere Programmierparadigmen und ist klar strukturiert. 1 Einführung In diesem Kapitel wird die moderne Programmiersprache Python vorgestellt. Nach einigen Bemerkungen zur Installation dieser Sprache wird gezeigt, wie Python interaktiv ausgeführt werden kann.

Mehr

Unterscheidung Tablet PC & Tablet Computer. Tablet PC; ursprüngliche Bezeichnung von Microsoft. Tablets gemeint

Unterscheidung Tablet PC & Tablet Computer. Tablet PC; ursprüngliche Bezeichnung von Microsoft. Tablets gemeint Überblick Unterscheidung Tablet PC & Tablet Computer Tablet PC; ursprüngliche Bezeichnung von Microsoft Mit Tablet Computer sind die heutigen gängigen Mit Tablet Computer sind die heutigen gängigen Tablets

Mehr

Komprimieren von Bildern

Komprimieren von Bildern Komprimieren von Bildern Weshalb komprimiert man Bilder? Internet-Browser können lediglich eine begrenzte Zahl von Bilddateien lesen: Dies sind die Formate.gif,.jpg und.png. Man kann Bilder jedoch in einer

Mehr

ObjectBridge Java Edition

ObjectBridge Java Edition ObjectBridge Java Edition Als Bestandteil von SCORE Integration Suite stellt ObjectBridge Java Edition eine Verbindung von einem objektorientierten Java-Client zu einer fast beliebigen Server-Komponente

Mehr

Dynamisch unterrichten mit Excel

Dynamisch unterrichten mit Excel Reimund Albers Dynamisch unterrichten mit Excel Erstellen von Schiebereglern 1 Dynamisch unterrichten mit Excel oder: Wie erstelle ich einen Schieberegler in Excel? Beispiel: Demonstration der Abhängigkeit

Mehr

Medienkompetenz, Grafik und DTP

Medienkompetenz, Grafik und DTP VO 340381 Informationsdesign; Medienkompetenz, Grafik und DTP Zentrum für Translationswissenschaft Letztes Mal sprachen wir über: Computer Aufbau Software Was ist Software? Software Soft im Sinne von weich/veränderbar

Mehr

Spring Dynamic Modules for OSGi Service Platforms

Spring Dynamic Modules for OSGi Service Platforms Gerd Wütherich freiberuflicher Softwarearchitekt Spring Dynamic Modules for OSGi Service Platforms Server Anwendungen mit Spring und Eclipse Equinox Agenda OSGi Technologie: OSGi Technologie im Überblick

Mehr

Programmieren was ist das genau?

Programmieren was ist das genau? Programmieren was ist das genau? Programmieren heisst Computerprogramme herstellen (von griechisch programma für Vorschrift). Ein Computerprogramm ist Teil der Software eines Computers. Als Software bezeichnet

Mehr

5 Eigenwerte und die Jordansche Normalform

5 Eigenwerte und die Jordansche Normalform Mathematik für Physiker II, SS Mittwoch 8.6 $Id: jordan.tex,v.6 /6/7 8:5:3 hk Exp hk $ 5 Eigenwerte und die Jordansche Normalform 5.4 Die Jordansche Normalform Wir hatten bereits erwähnt, dass eine n n

Mehr

Licom AlphaCAM 2012 R1

Licom AlphaCAM 2012 R1 Licom AlphaCAM 2012 R1 What is New Seite 1 von 17 Borchersstr. 20 Sehr geehrte AlphaCAM Anwender, anliegend finden Sie die Update-Information zu unserer AlphaCAM Haupt-Release für das Jahr 2012, der Version

Mehr

Überblick Echtzeit-Rendering. Uwe Domaratius dou@hrz.tu-chemnitz.de

Überblick Echtzeit-Rendering. Uwe Domaratius dou@hrz.tu-chemnitz.de Überblick Echtzeit-Rendering Uwe Domaratius dou@hrz.tu-chemnitz.de Gliederung 1. Einleitung 2. geometriebasierende Verbesserungen 3. Level-of-Detail 4. Culling 5. Texturen 6. bildbasiertes Rendering Was

Mehr

Value Added Services (VAS) Mobile. Kundenprojekte

Value Added Services (VAS) Mobile. Kundenprojekte Value Added Services (VAS) Mobile Kundenprojekte Live Reply arbeitet bereits seit 10 Jahren an mobilen en. en und Anwendungsfälle reichen von Widgets bis hin zu ausgeklügelten Symbian- oder Android-en

Mehr

Parallele und funktionale Programmierung Wintersemester 2013/14. 8. Übung Abgabe bis 20.12.2013, 16:00 Uhr

Parallele und funktionale Programmierung Wintersemester 2013/14. 8. Übung Abgabe bis 20.12.2013, 16:00 Uhr 8. Übung Abgabe bis 20.12.2013, 16:00 Uhr Aufgabe 8.1: Zeigerverdopplung Ermitteln Sie an folgendem Beispiel den Rang für jedes Listenelement sequentiell und mit dem in der Vorlesung vorgestellten parallelen

Mehr

Sicherheit in Android

Sicherheit in Android Motivation Aufbau Sicherheit Ausblick Quellen Sicherheit in Android Peter Salchow INF-M2 - Anwendungen 1 Sommersemester 2008 Department Informatik HAW Hamburg 20. Mai 2008 Peter Salchow Sicherheit in Android

Mehr

Texture Based Direct Volume Rendering

Texture Based Direct Volume Rendering Texture Based Direct Volume Rendering Vorlesung: "Advanced Topics in Computer Graphics" cbrak@upb.de 1 Agenda 1. Einleitung Volume Rendering 1.1. Volumendatensatz 1.2. Volumenintegral 1.3. Image order

Mehr

2.1 CorelDRAW 8 Das Allround-Programm

2.1 CorelDRAW 8 Das Allround-Programm 2 CorelDRAW 8 Ziele dieses Kapitels: $ Sie lernen verschiedene Anwendungsgebiete von CorelDRAW 8 kennen. $ Sie verstehen den Unterschied zwischen Vektor-, Pixel- und Rendergrafiken. 2.1 CorelDRAW 8 Das

Mehr

6 Symmetrische Matrizen und quadratische Formen

6 Symmetrische Matrizen und quadratische Formen Mathematik für Ingenieure II, SS 9 Freitag. $Id: quadrat.tex,v.5 9//5 ::59 hk Exp $ $Id: orthogonal.tex,v.4 9// ::54 hk Exp $ $Id: fourier.tex,v. 9// :: hk Exp $ Symmetrische Matrizen und quadratische

Mehr

19.09.2014. 2D-Texturen. Reflectance Mapping 3D-Texturen. Farbtexturen

19.09.2014. 2D-Texturen. Reflectance Mapping 3D-Texturen. Farbtexturen 2D-Texturen Texturarten Transformationen Generierung Thomas Jung Reflectance Mapping 3D-Texturen Modellierung von Details erfordert Zeit Darstellung ist aufwendig (langsam) Details belegen Speicherplatz

Mehr

SMART Notebook 11.2 Software für Windows - und Mac-Computer

SMART Notebook 11.2 Software für Windows - und Mac-Computer Versionshinweise SMART Notebook 11.2 Software für Windows - und Mac-Computer Über diese Versionshinweise Diese Versionshinweise fassen die Funktionen der SMART Notebook 11.2 Collaborative Learning Software

Mehr

Bewegliche Ziele Entwicklungsumgebungen für Pocket PCs und Smartphones

Bewegliche Ziele Entwicklungsumgebungen für Pocket PCs und Smartphones Seite 1 von 5 Bewegliche Ziele Entwicklungsumgebungen für Pocket PCs und Smartphones von Robert Panther Mobile Devices auf Basis von Windows CE haben sich inzwischen fest am Markt etabliert. Nach dem Siegeszug

Mehr

Bildtransformationen. Geometrische Transformationen Grauwert-Interpolation

Bildtransformationen. Geometrische Transformationen Grauwert-Interpolation Bildtransformationen Geometrische Transformationen Grauwert-Interpolation Transformation Transformation zwei Schritte geometrische Transformation (Trafo der Koordinaten) Neuberechnung der Pielwerte an

Mehr

& sind die Vektorkomponenten von und sind die Vektorkoordinaten von. A x. a) Der Betrag eines Vektors

& sind die Vektorkomponenten von und sind die Vektorkoordinaten von. A x. a) Der Betrag eines Vektors Einführu hnung Was ist ein Vektor? In Bereichen der Naturwissenschaften treten Größen auf, die nicht nur durch eine Zahlenangabe dargestellt werden können, wie Kraft oder Geschwindigkeit. Zur vollständigen

Mehr

Lineare Algebra und Computer Grafik

Lineare Algebra und Computer Grafik Lineare Algebra und Computer Grafik Vorlesung an der Hochschule Heilbronn (Stand: 7 Mai ) Prof Dr V Stahl Copyright 6 by Volker Stahl All rights reserved Inhaltsverzeichnis Vektoren 4 Vektoren und Skalare

Mehr

Anleitung zum Applet Schiefer Wurf

Anleitung zum Applet Schiefer Wurf Anleitung zum Applet: Schiefer Wurf 1 Anleitung zum Applet Schiefer Wurf Bearbeitung von: Mathias Hartner SS 2009 Studiengang: Elektronik und Informationstechnik Betreuung durch: Prof. Dr. Wilhelm Kleppmann

Mehr

Einführung in die Cross-Plattform Entwicklung Zugriff auf Sensoren mit dem Intel XDK

Einführung in die Cross-Plattform Entwicklung Zugriff auf Sensoren mit dem Intel XDK Einführung in die Cross-Plattform Entwicklung Zugriff auf Sensoren mit dem Intel XDK Einführung Dieses Hands-on-Lab (HOL) macht den Leser mit dem Intel XDK und dem Zugriff auf Sensoren vertraut. Es wird

Mehr

Dr. Holger Eichelberger

Dr. Holger Eichelberger SchülerInnen-Uni 2015 Dr. Holger Eichelberger eichelberger@sse.uni-hildesheim.de Inhalt 1. Wer ist das? 1 2. Was ist ein Smartphone? 3 3. Wie entwickelt man für Smartphones? 7 4. Wie bauen wir die App?

Mehr

4 Codierung nach Viginere (Lösung)

4 Codierung nach Viginere (Lösung) Kapitel 4 Codierung nach Viginere (Lösung) Seite 1/14 4 Codierung nach Viginere (Lösung) 4.1 Einführung Blaise de Vigenère lebte von 1523 bis 1596 in Frankreich und war nach dem Studium bei verschiedenen

Mehr

Schritt für Schritt Anleitung zum Erstellen einer Android-App zum Ein- und Ausschalten einer LED

Schritt für Schritt Anleitung zum Erstellen einer Android-App zum Ein- und Ausschalten einer LED Schritt für Schritt Anleitung zum Erstellen einer Android-App zum Ein- und Ausschalten einer LED Mit Google Chrome nach MIT App Inventor suchen. In den Suchergebnissen (siehe unten) auf

Mehr

Linear Workflow. Linear Workflow. Version 1.0-2011-10-11

Linear Workflow. Linear Workflow. Version 1.0-2011-10-11 Version 1.0-2011-10-11 Verfahren, Bilder unter Rücksichtnahme ihres Farbprofils und der des Ausgabegeräts zu berechnen (3D), bzw. zu bearbeiten (Compositing), um eine mathematisch und physikalisch korrekte

Mehr

Smartphone Entwicklung mit Android und Java

Smartphone Entwicklung mit Android und Java Smartphone Entwicklung mit Android und Java predic8 GmbH Moltkestr. 40 53173 Bonn Tel: (0228)5552576-0 www.predic8.de info@predic8.de Was ist Android Offene Plattform für mobile Geräte Software Kompletter

Mehr

Rendering: Lighting & Shading

Rendering: Lighting & Shading Hauptseminar How to make a Pixar Movie WS 2010 / 2011 Rendering: Lighting & Shading von Manuel Schmidt Gliederung: 1 Einführung 1.1 Rendering 1.2 Reflektionsmodelle 1.2.1. Diffuse Reflektion 1.2.2. Spieglende

Mehr

3.6 Drehungen in der Ebene

3.6 Drehungen in der Ebene 3.6-1 3.6 Drehungen in der Ebene 3.6.1 Die Drehmatrix Gelegentlich müssen wir die Lage eines Teilchens in einem ebenen Koordinatensystem beschreiben, das gegenüber einem festen System um φ gedreht ist.

Mehr

C++ mit. Microsoft Visual C++ 2008. Richard Kaiser. Einführung in Standard-C++-, C++/CLI und die objektorientierte Windows.

C++ mit. Microsoft Visual C++ 2008. Richard Kaiser. Einführung in Standard-C++-, C++/CLI und die objektorientierte Windows. Richard Kaiser C++ mit Microsoft Visual C++ 2008 Einführung in Standard-C++-, C++/CLI und die objektorientierte Windows.NET-Programmierung Mit CD-ROM Geleitwort Wenn man heute nach Literatur über Programmiersprachen

Mehr

Lernmaterialblatt Mathematik. Vektorrechnung eine Einführung. Anwendung Mathematik I. Einleitung:

Lernmaterialblatt Mathematik. Vektorrechnung eine Einführung. Anwendung Mathematik I. Einleitung: Vektorrechnung eine Einführung Einleitung: Um beispielsweise das Dreieck ABC in der Abbildung an die Position A'B'C' zu verschieben, muss jeder Punkt um sieben Einheiten nach rechts und drei nach oben

Mehr

Autorensysteme für mobile Anwendungen - Totgesagte leben länger. Prof. Dr. Michael Bauer 25.10. 2012 Autorensysteme

Autorensysteme für mobile Anwendungen - Totgesagte leben länger. Prof. Dr. Michael Bauer 25.10. 2012 Autorensysteme Autorensysteme für mobile Anwendungen - Totgesagte leben länger Was ist, was will ein Autor? Produzent interaktiver, multimedialer Inhalte geschlossene Einheiten (Apps) keine Grenzen für Kreativität Entwicklungs-

Mehr

Staatlich geprüfte Techniker

Staatlich geprüfte Techniker Auszug aus dem Lernmaterial ortbildungslehrgang Staatlich geprüfte Techniker Auszug aus dem Lernmaterial Maschinenbautechnische Grundlagen DAA-Technikum Essen / www.daa-technikum.de, Infoline: 001 83 16

Mehr

Vektoren. Jörn Loviscach. Versionsstand: 11. April 2009, 23:42

Vektoren. Jörn Loviscach. Versionsstand: 11. April 2009, 23:42 Vektoren Jörn Loviscach Versionsstand:. April 29, 23:42 Rechnen mit Pfeilen Bei den komplexen Zahlen haben wir das Rechnen mit Pfeilen schon kennen gelernt. Addition und Subtraktion klappen in drei wie

Mehr

atvise webmi atvise webmi Kurzeinführung Die weltweit erste professionelle 100% native Web-Visualisierung Kurzeinführung

atvise webmi atvise webmi Kurzeinführung Die weltweit erste professionelle 100% native Web-Visualisierung Kurzeinführung atvise webmi Die weltweit erste professionelle 100% native Web-Visualisierung 08.04.2009 Tel: 0043-2682-75799-0 Page 1 / 6 Inhalt: 1. Einleitung... 3 1.1. Professionelle Visualisierung von jedem Gerät

Mehr

Länge eines Vektors und Abstand von zwei Punkten 2. 4 = 6. Skalarprodukt und Winkel zwischen Vektoren

Länge eines Vektors und Abstand von zwei Punkten 2. 4 = 6. Skalarprodukt und Winkel zwischen Vektoren Länge eines Vektors und Abstand von zwei Punkten Aufgabe Bestimme die Länge des Vektors x. Die Länge beträgt: x ( ) =. Skalarprodukt und Winkel zwischen Vektoren Aufgabe Es sind die Eckpunkte A(; ), B(

Mehr

Perspektiven: Spiele in ios

Perspektiven: Spiele in ios Perspektiven: Spiele in ios Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung SS 2012 Reusable Content in 3D und Simulationssystemen Dozent: Prof. Dr. Manfred Thaller Referent:

Mehr

x 2 2x + = 3 + Es gibt genau ein x R mit ax + b = 0, denn es gilt

x 2 2x + = 3 + Es gibt genau ein x R mit ax + b = 0, denn es gilt - 17 - Die Frage ist hier also: Für welche x R gilt x = x + 1? Das ist eine quadratische Gleichung für x. Es gilt x = x + 1 x x 3 = 0, und man kann quadratische Ergänzung machen:... ( ) ( ) x x + = 3 +

Mehr

OpenGL vs. Direct3D Ein 3D-API Vergleich

OpenGL vs. Direct3D Ein 3D-API Vergleich OpenGL vs. Direct3D Ein 3D-API Vergleich 3D-APIs (Application Programming Interface)sind Software-Schnittstellen, um über einen Standard auf die Hardware des Rechners zugreifen zu koennen. Direct3D von

Mehr

Java für C++ Programmierer

Java für C++ Programmierer Java für C++ Programmierer Alexander Bernauer bernauer@inf.ethz.ch Einführung in die Übungen zu Informatik II (D ITET) FS2010 ETH Zürich Ziel Allgemeiner Überblick Kennenlernen der Suchbegriffe Warum Java?

Mehr

Gitterherstellung und Polarisation

Gitterherstellung und Polarisation Versuch 1: Gitterherstellung und Polarisation Bei diesem Versuch wollen wir untersuchen wie man durch Überlagerung von zwei ebenen Wellen Gttterstrukturen erzeugen kann. Im zweiten Teil wird die Sichtbarkeit

Mehr

Projekt AGB-10 Fremdprojektanalyse

Projekt AGB-10 Fremdprojektanalyse Projekt AGB-10 Fremdprojektanalyse 17. Mai 2010 1 Inhaltsverzeichnis 1 Allgemeines 3 2 Produktübersicht 3 3 Grundsätzliche Struktur und Entwurfsprinzipien für das Gesamtsystem 3 3.1 Die Prefuse Library...............................

Mehr