2016-05-14 3 views
0

В SpriteKit я могу использовать сенсорные локаторы для записи «Хитов» в цель, где центр цели «бычий глаз» имеет координаты (0,0). После многократной съемки я получаю все хиты как массив с CGPoints. Поскольку цель составляет 500 х 500 точек (SKScene, sks-файл), все хиты могут иметь положение x от -250 до +250 и аналогично для позиции y.Swift: Как конвертировать CGPoints из SpriteKit в CGRect?

Target

В attatched фото, хиты регистрируются в качестве точек около (150, 150).

Проблема возникает, когда я буду использовать знаменитый LFHeatMap https://github.com/gpolak/LFHeatMap.

+ (UIImage *)heatMapWithRect:(CGRect)rect 
         boost:(float)boost 
         points:(NSArray *)points 
        weights:(NSArray *)weights; 

LFHeatMap генерирует UIImage, основанный на массиве, который я добавить к UIImageView. Проблема заключается в том, что имеет UIViews х и у значений, расположенных в отличие от 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

Снижение выстрелы делает тепловой шаг выше.

Как я могу это решить? Либо все точки должны быть преобразованы, чтобы соответствовать другой системе координат, или координировать CGrect, делающие тепловую карту, должны быть изменены. Как это может быть сделано?

ответ

0

Это было нелегко, когда решение впервые возникло. Запустите петлю через массив точек и умножьте точку.y на -1 ... Тогда все значения по оси y верны.