2016-05-14 12 views
0

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?

Target

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 
    } 

enter image description here

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?

Antwort

0

Dies war peinlich einfach, als die Lösung zuerst auftrat. Führen Sie eine Schleife durch das Punkte-Array und multiplizieren Sie den Punkt.y mit -1 ... Dann ist der gesamte Wert auf der Y-Achse korrekt.