ToyDrawingUtils.cpp
1.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//
// ToyDrawingUtils.cpp
// SteveMaggieCpp
//
// Created by Katarzyna Kalinowska-Górska on 20.05.2017.
//
//
#include <stdio.h>
#include "ToyDrawingUtils.h"
#include "ToyGeometryUtils.h"
//TODO: this is not so needed here, maybe for thinner lines in scribbles. but it needs to be improved, because it causes android to get stuck.
std::vector<cocos2d::Point> ToyDrawingUtils::calculateSmoothLinePoints(std::vector<cocos2d::Point> threeLastPoints)
{
// if(threeLastPoints.size() != 3){
//// log("ToyDrawingUtils: calculateSmoothLinePoints: argument should be an array with exactly three elements");
// return threeLastPoints;
// }
//
// std::vector<cocos2d::Point> smoothedPoints;
//
// auto point1 = threeLastPoints[0], point2 = threeLastPoints[1], point3 = threeLastPoints[2];
//
// auto midPoint1 = point1.getMidpoint(point2);
// auto midPoint2 = point2.getMidpoint(point3);
//
// auto distance = midPoint1.distance(midPoint2);
// auto segmentDistance = 2; //2 pixels
// auto numberOfSegments = MIN(128, MAX(floor(distance / segmentDistance), 32));
//
// float t = 0;
// float step = 1 / numberOfSegments;
//
// for(int i = 0; i < numberOfSegments; ++i){
//
// std::vector<cocos2d::Point> argumentPoints;
// auto p1 = midPoint1 * (1-t)*(1-t);
// auto p2 = point2 * t*(1-t)*2;
// auto p3 = midPoint2 * t*t;
// argumentPoints.push_back(p1);
// argumentPoints.push_back(p2);
// argumentPoints.push_back(p3);
//
// auto newPoint = ToyGeometryUtils::addPoints(argumentPoints);
//
// smoothedPoints.push_back(newPoint);
// t += step;
// }
//
// smoothedPoints.push_back(midPoint2);
// return smoothedPoints;
return threeLastPoints;
}