project_files/HedgewarsMobile/Classes/CGPointUtils.c
author koda
Tue, 18 Jan 2011 23:08:47 +0100
changeset 4855 2480ab325057
parent 4476 4bf74e158f44
child 4976 088d40d8aba2
permissions -rw-r--r--
when multiple fingers are detected, remove all widgets in order to avoid accidental commands
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
     1
/*
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
     2
 *  CGPointUtils.c
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
     3
 *  PinchMe
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
     4
 *
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
     5
 *  Created by Jeff LaMarche on 8/2/08.
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
     6
 *  Copyright 2008 __MyCompanyName__. All rights reserved.
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
     7
 *
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
     8
 */
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
     9
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    10
#include "CGPointUtils.h"
3922
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3547
diff changeset
    11
#include "math.h"
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    12
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    13
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    14
CGFloat distanceBetweenPoints (CGPoint first, CGPoint second) {
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    15
    CGFloat deltaX = second.x - first.x;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    16
    CGFloat deltaY = second.y - first.y;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    17
    return sqrt(deltaX*deltaX + deltaY*deltaY );
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    18
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    19
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    20
CGFloat angleBetweenPoints(CGPoint first, CGPoint second) {
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    21
    CGFloat height = second.y - first.y;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    22
    CGFloat width = first.x - second.x;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    23
    CGFloat rads = atan(height/width);
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    24
    return radiansToDegrees(rads);
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    25
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    26
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    27
CGFloat angleBetweenLines(CGPoint line1Start, CGPoint line1End, CGPoint line2Start, CGPoint line2End) {
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    28
    CGFloat a = line1End.x - line1Start.x;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    29
    CGFloat b = line1End.y - line1Start.y;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    30
    CGFloat c = line2End.x - line2Start.x;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    31
    CGFloat d = line2End.y - line2Start.y;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    32
    CGFloat rads = acos(((a*c) + (b*d)) / ((sqrt(a*a + b*b)) * (sqrt(c*c + d*d))));
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    33
    return radiansToDegrees(rads);
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    34
}
4476
4bf74e158f44 team selection completely refactored, now has animation and more performance
koda
parents: 3922
diff changeset
    35
4bf74e158f44 team selection completely refactored, now has animation and more performance
koda
parents: 3922
diff changeset
    36
CGFloat CGPointDot(CGPoint a,CGPoint b) {
4bf74e158f44 team selection completely refactored, now has animation and more performance
koda
parents: 3922
diff changeset
    37
    return a.x*b.x+a.y*b.y;
4bf74e158f44 team selection completely refactored, now has animation and more performance
koda
parents: 3922
diff changeset
    38
}
4bf74e158f44 team selection completely refactored, now has animation and more performance
koda
parents: 3922
diff changeset
    39
4bf74e158f44 team selection completely refactored, now has animation and more performance
koda
parents: 3922
diff changeset
    40
CGFloat CGPointLen(CGPoint a) {
4bf74e158f44 team selection completely refactored, now has animation and more performance
koda
parents: 3922
diff changeset
    41
    return sqrtf(a.x*a.x+a.y*a.y);
4bf74e158f44 team selection completely refactored, now has animation and more performance
koda
parents: 3922
diff changeset
    42
}
4bf74e158f44 team selection completely refactored, now has animation and more performance
koda
parents: 3922
diff changeset
    43
4bf74e158f44 team selection completely refactored, now has animation and more performance
koda
parents: 3922
diff changeset
    44
CGPoint CGPointSub(CGPoint a,CGPoint b) {
4bf74e158f44 team selection completely refactored, now has animation and more performance
koda
parents: 3922
diff changeset
    45
    CGPoint c = {a.x-b.x,a.y-b.y};
4bf74e158f44 team selection completely refactored, now has animation and more performance
koda
parents: 3922
diff changeset
    46
    return c;
4bf74e158f44 team selection completely refactored, now has animation and more performance
koda
parents: 3922
diff changeset
    47
}
4bf74e158f44 team selection completely refactored, now has animation and more performance
koda
parents: 3922
diff changeset
    48
4bf74e158f44 team selection completely refactored, now has animation and more performance
koda
parents: 3922
diff changeset
    49
CGFloat CGPointDist(CGPoint a,CGPoint b) {
4bf74e158f44 team selection completely refactored, now has animation and more performance
koda
parents: 3922
diff changeset
    50
    CGPoint c = CGPointSub(a,b);
4bf74e158f44 team selection completely refactored, now has animation and more performance
koda
parents: 3922
diff changeset
    51
    return CGPointLen(c);
4bf74e158f44 team selection completely refactored, now has animation and more performance
koda
parents: 3922
diff changeset
    52
}
4bf74e158f44 team selection completely refactored, now has animation and more performance
koda
parents: 3922
diff changeset
    53
4bf74e158f44 team selection completely refactored, now has animation and more performance
koda
parents: 3922
diff changeset
    54
CGPoint CGPointNorm(CGPoint a) {
4bf74e158f44 team selection completely refactored, now has animation and more performance
koda
parents: 3922
diff changeset
    55
    CGFloat m = sqrtf(a.x*a.x+a.y*a.y);
4bf74e158f44 team selection completely refactored, now has animation and more performance
koda
parents: 3922
diff changeset
    56
    CGPoint c;
4bf74e158f44 team selection completely refactored, now has animation and more performance
koda
parents: 3922
diff changeset
    57
    c.x = a.x/m;
4bf74e158f44 team selection completely refactored, now has animation and more performance
koda
parents: 3922
diff changeset
    58
    c.y = a.y/m;
4bf74e158f44 team selection completely refactored, now has animation and more performance
koda
parents: 3922
diff changeset
    59
    return c;
4bf74e158f44 team selection completely refactored, now has animation and more performance
koda
parents: 3922
diff changeset
    60
}