Die Besucher können Spiele über Gesten spielen
weiterlesen… “Xbox Kinect Programmierung für Windows Beispiel Videos” »
Die Besucher können Spiele über Gesten spielen
weiterlesen… “Xbox Kinect Programmierung für Windows Beispiel Videos” »
Klassen können Funktionen und Member-Variablen vererben an anderen Klassen.
Class A{
public:
void f();
};
Class B : public A{};//B erbt public von A
B* b = new B;
b.f(); //Funktion ist vorhanden, da geerbtint a(int b); int a(double b); int a(char*); int x = a(5); //ist ok, 5 ist int, 5.0 wäre double
int a(int b); double a(int b); int x = a(5); //welche Funktion nehmen, error
sowie bei Default-Argumenten:
int a(int b, int c = 3); int a(int b); int x = a(5); //welche Funktion nehmen, error
Das Überladen der Funktionen ist möglich durch Name-Mangeling: weiterlesen… “Einführung in C++ – Funktionen und Operatoren überladen (Overloading) – Teil4” »
Rangfolge:
unsigned long long ("größter Wert") long long long double double float unsigned long long unsigned (int) int short boolT->T& T&->T T->const T T*->const T* T&->const T&bool i = true; int y = static_cast<int> i; //y ist 1struct A{} a; struct B{} b; struct A *pa = &a; struct B *pb = pa; //Fehler, nicht derselbe Datentyp, obwohl selber Struct-Inhalt struct B *pb = reinterpret_cast<B*>(pa); //ist okEin Zeiger ist eine Variable, die die Speicheradresse (des RAMs) einer anderen Variablen enthält.
int i = 100; int* pi = &i; cout << pi; //Speicheradresse: z.B. 0x000026
int i = 100; int* pi = &i; cout << *pi; //100 cout << pi; //Speicheradresse: z.B. 0x000026
int i=10; void* pi; pi=&i; cout << *(int*) pi;
int i = 100; int* pi = &i; pi = NULL;
const int i = 100; const int* pi = &i;
int f(float a){return 1;};
int (*pf)(float) = &f;
int x = (*pf)(1,5);inf f(char c); extern char c; inf f(char c);
Die die Arbeit an der Kinect startete bei Microsoft nachdem Nintendo 2005 ihr Wii-Konsole mit der Wii Remote Steuerung herausgebracht hatte. An der eigentlichen Steuerung wurde aber schon seit 2003 gearbeitet: siehe Geschichte der NUI/Kinect.
Zu Beginn wurden 2 Teams gegründet, die auf Basis von 2 unterschiedlichen Technologien die Kinect bauen sollten. Die Technologien kamen von den Firmen 3DV (gekauft für 35mio$) und PrimeSense (ein unabhängiges israelisches Forschungsunternehmen). Am Ende schaffte nur die PrimeSense Technologie die hohen Anforderungen an die Technik zu bewerkstelligen und einen Prototypen zu bauen, der RGB Kamera, Infrarotsensor und einen Infrarotlichtsensor enthielt und Tiefendaten mit 30fps rendern konnte. Die Geschwindigkeit wurde dadurch ermöglicht, dass die Tiefendaten mit Hilfe der Infrarotdaten auf eine neue Art und Weise bestimmt wurden:
Vorher wurde die Zeit gemessen, die die Daten benötigen, um vom Sensor auf einen Gegenstand und wieder zurück zum Sensor flogen. Die neue Technik projeziert ein Muster von rote Punkte auf den Raum und misst die Größe und den Abstand um die Tiefendaten zu bestimmen.
In die Kinect wurde ein 4-faches Mikrofon Array eingebaut, um in großen Räumen effektiv Spracherkennung durchführen zu können. Microsoft konnte dabei auf die Erfahrung von Windows zurückgreifen, in dem Spracherkennung seit Windows XP enthalten ist.
Auf Basis der Hardware wurde als erstes das Problem des Motion-Trackings gelöst. Das Kinect Entwicklungsteam (Project Natal) beauftragte Jamie Shotton den Microsoft Research in Cambridge mit der Verbesserung des ersten Motion-Trackings Algorithmuses, der folgende Nachteile hatte:
Die Lösung: Es wurde Computer Learning verwendet und eine Bewegungssoftware mit Tonnen von Daten gefüttert, u.a. aus Hollywoods Motion Capture Studios. Daraus resultierte ein Entscheidungsbaum, der die Gelenke erkennen konnte.
Eine weiteres Highlight ist die amerikanische Spracherkennung, die mit verschiedenen amerikanischen Akzenten umgehen kann und auch mit Hilfe von Computer Learning erstellt wurde.
Die Kinect wurde schließlich am 26.9.2010 veröffentlicht, 3 Jahre nach dem eigentliche Veröffentlichungstermin zur E3 2007. In den ersten 60 Tagen wurden durchschnittlich 133.000 Einheiten verkauft pro Tag wodurch die Kinect vor dem iPhone und iPad im Guiness Buch der Rekorde steht.
Weiterlesen: Die technische Geschichte der Xbox Kinect und NUI oder Kinect SDK Tutorial Installation unter Windows 7
aus dem Buch:
sieh auch Microsofts technische Entwicklungsgeschichte der Kinect
In den später 70er Jahren entwickelte Chris Schmandt am MIT das erste Projekt mit Sprach- und Gestenerkennung zur Bedienung graphischer Oberflächen namens “Put-That-There”. Der User hatte dafür einen magnetischen Würfel auf dem Handgelenk und ein am Kopf befestigtes Mikrofon anzulegen.
Seine wissenschaftliche Arbeit über “Put-That-There” kann man hier lesen.
Ende der 90er Jahre entwickelte Mark Lucente für IBM ein User Interface, welches ohne Referenzobjekte wie Stifte oder Handschuhe auskam und die Gesten des Users erkannte. Das Projekt war schon so visionär, dass es als Alternative für Maus und Keyboard ausgelegt war.
Bei dem Hollywood Film mit Tom Cruise von 2002 ist zum ersten Mal eine Kinect-artige Steuerung zu sehen, die zu dieser Zeit als Science Fiction gegolten haben durfte und für uns nicht mehr ganz so schwer vorstellbar ist. Als wissenschaftlichen Berater hatte Steven Spielberg John Underkoffer vom MIT engagierte. Vielleicht nicht ganz zufällig begann Microsoft ein Jahr später (2003) mit der Entwicklung der Kinect-Technologie.
Der Minority Report zeigte die Möglichkeiten der New User Interfaces(NUI) als einer der ersten Produktionen aus. Damit ist der Film ein ähnlicher Vorreiter wie die Star Trek Serie, die z.B. automatisch öffnende Türen oder aufklappbare Handys (Captain Kirk’s Communicator) “erfand”.
Besonders interessant an dem folgendem Ausschnitt aus Minority Report:
Weiterlesen: Microsofts technische Entwicklungsgeschichte der Kinect oder Kinect SDK Tutorial Installation unter Windows 7
aus dem Buch:
Eine Klasse zum Speichern von 4×4 Matrizen z.B: für Kinect Anwendungen. Die Klasse hat eine Kontrolle der gespeicherten Daten, für den Fall, dass etwas schief geht beim Speichern.
weiterlesen… “Cpp speichern und laden von Matrizen mittels Filestream Klasse” »
Mit folgender Funktion lassen sich Konsolen Befehle aus einem C++/C Programm aus starten:
#include <iomanip>
#include <iostream>
#include <cstdlib>
using namespace std;
bool startExternalProgramm(char* terminalCommando)
{
bool returnVal = false;
if(terminalCommando != "")
{
cout << "Executing terminal command: " << terminalCommando << endl;
int systemReturn = system(terminalCommando);
if (systemReturn == 0)
{
returnVal = true;
}
else
{
cout << "The value returned from Terminal was: " << systemReturn << endl;
cout << "Sorry,commando for terminal not executable" << endl;
}
}
else
{
cout << "Sorry, empty commando for terminal" << endl;
}
return returnVal;
}