Was ist die richtige Art, einem Feld eines GLKVector3 (oder 4) zuzuweisen?GLKit. Wie ordne ich einer Komponente eines GLKVector3 zu
was Sinn macht, da .x
und .z
Getter sind. Was ist die Problemumgehung?
Was ist die richtige Art, einem Feld eines GLKVector3 (oder 4) zuzuweisen?GLKit. Wie ordne ich einer Komponente eines GLKVector3 zu
was Sinn macht, da .x
und .z
Getter sind. Was ist die Problemumgehung?
Ich glaube, dass in Swift GLKVector3
s unveränderlich sind, ob ein var
oder ein let
. Verwenden Sie GLKVector3Make
, um einen mit beliebigen Werten Float
zu erstellen; Erstellen Sie anschließend neue Ergebnisse für neue Instanzen.
So:
let ballLocation = GLKVector3Make(
(locationInBallCoordinates.x - ballCentre.x)/ballRadius,
0.0,
(locationInBallCoordinates.y - ballCentre.y)/ballRadius)
Oder, wenn locationInBallCoordinates
und ballCentre
waren bereits Fälle von GLKVector3
- und die y-to-z-Komponente Schalter, die ich nicht bemerkt hatte, als ich zum ersten Mal diese Antwort schrieb nicht da waren - dann:
let ballLocation =
GLKVector3DivideScalar(
GLKVector3Subtract(locationInBallCoordinates, ballCentre),
ballRadius)
es ist wahrscheinlich am einfachsten zu entpacken und umpacken y
s in z
s zu bewegen, aber man könnte auch eine Matrix verwenden, multiplizieren, wenn Sie verzweifelt waren es hohe Niveau zu halten.
Yah, ich hatte davor Angst. Seufzer. Macht unnötigen umständlichen/wortreichen Code für Tribal Setting-Operationen wie diese. Weiter. Danke. – dugla
Ahh, eigentlich kann ich + -/* überladen, um die Dinge etwas prägnanter zu machen. Schnelle FTW. – dugla