In SpriteKit kann ich Touch-Locatons verwenden, um "Treffer" in einem Ziel aufzuzeichnen, wobei die Mitte des Ziels, "Bullenauge", die Koordinaten (0,0) hat. Nach vielen Aufnahmen werde ich alle Treffer als Array mit CGPoints abrufen. Da das Ziel 500 x 500 Punkte (SKScene, SKS-Datei) ist, können alle Treffer eine x-Position von -250 bis +250 und ebenfalls für die y-Position haben.Swift: Wie konvertiert man CGPoints von SpriteKit nach CGRect?
Im attatched Foto werden die Hits als Punkte registrieren um bei (150, 150).
Das Problem tritt auf, wenn ich die berühmte LFHeatMap https://github.com/gpolak/LFHeatMap verwenden werde.
+ (UIImage *)heatMapWithRect:(CGRect)rect
boost:(float)boost
points:(NSArray *)points
weights:(NSArray *)weights;
Die LFHeatMap erzeugt ein UIImage auf dem Array basiert, die ich mit einem UIImageView hinzuzufügen. Das Problem ist, dass die UIViews die x- und y-Werte anders SKScenes
func setHeatMap() {
let points = getPointsFromCoreData()
let weigths = getWeightsFromCoreData()
var rect = CGRectMake(0, 0, 500, 500)
rect.origin = CGPointMake(-250, -250)
let image =
LFHeatMap.heatMapWithRect(rect, boost: 1, points: points, weights: weights)
heatMapView.contentMode = UIViewContentMode.ScaleAspectFit
heatMapView.image = image
}
Absenken der Aufnahmen macht die Wärme bewegen höher angeordnet ist.
Wie kann ich das lösen? Entweder Alle Punkte müssen konvertiert werden, um in ein anderes Koordinatensystem zu passen, oder die Koordinate der CGrect, die die Heatmap erstellt, muss geändert werden. Wie kann das gemacht werden?