Ich bin nicht davon überzeugt, dass die Eingabe, die Sie beschreiben, (129, 238, 191)
, ist in der Tat der gleiche Vektor wie die Ausgabe, die Sie wünschen, (0.382027, 0.718028, 0.5818)
.
Der Ausgabevektor ist ein Einheitsvektor. I.e. es wurde "normalisiert" und so hat es Länge 1
. Theoretisch sollten Sie in der Lage sein, den Eingabevektor in das normalisierte Format zu konvertieren, indem Sie einfach die Komponenten des Eingabevektors durch die Länge dieses Vektors (331.3095
) dividieren. Wenn ich das tue, bekomme ich einen normalisierten Vektor von (0.389363997, 0.718361482, 0.576500181)
.
Der wichtige Hinweis zu diesem Vektor ist, dass die X- und Y-Komponenten größer sind als in der gewünschten Ausgabe, während die Z-Komponente kleiner ist. I.e. Dieser Vektor zeigt einfach nicht in die gleiche Richtung wie die gewünschte Ausgabe.
Es ist möglich, dass in Ihrem Beispielsystem ein Rundungsfehler vorliegt, der diese Diskrepanz berücksichtigt, entweder bei der Konvertierung in das Format byte
oder möglicherweise sogar in den Referenzausgangswert. Es gibt nicht genug Informationen in Ihrer Frage, um den Unterschied zu erklären.
Unabhängig davon, scheint es mir klar, dass die grundlegende Umwandlung erfordert nichts weiter als von dem Eingangsvektor in seine normalisierte Form zu konvertieren:
byte bx = 129, by = 238, bz = 191;
double length = Math.Sqrt((bx * bx) + (by * by) + (bz * bz));
double dx = bx/length, dy = by/length, dz = bz/length;
Wo bx
, by
und bz
sind Ihre Eingabewerte und dx
, dy
und dz
sind Ihre Ausgaben. Dies erzeugt nicht genau die Werte, die Sie erwartet haben, aber ich bin einigermaßen zuversichtlich, dass es die Werte erzeugt, die Sie erwarten sollten .
Wenn Sie etwas genaueres brauchen, müssen Sie Ihre Frage so verbessern, dass sie genauere Informationen darüber enthält, woher die Zahlen kommen, aus denen Ihr Beispiel stammt, und warum Sie glauben, dass sie den gleichen Vektor darstellen.
Das Ding ist Ausgabevektoren, die ich zur Verfügung gestellt werde, kann ein wenig ungültig sein. Ihre Erklärung ist die beste, die ich finden konnte, es gab einige Informationen im Internet über die Normalisierung der Eingabevektoren, aber es war nicht genug zu verstehen. Vielen Dank, Ihre Antwort ist perfekt! –