获取触摸的两点距离

Posted pengyuan_D

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取触摸的两点距离相关的知识,希望对你有一定的参考价值。

(1)设置根视图控制器

(2)

#import "RootViewController.h"

@interface RootViewController ()

@end

@implementation RootViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) 
        // Custom initialization
    
    return self;


- (void)viewDidLoad

    [super viewDidLoad];

    //设置背景颜色
    self.view.backgroundColor = [UIColor grayColor];
    
    //开启多点触摸
    self.view.multipleTouchEnabled = YES;
    


//触摸移动
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 

    if (touches.count == 2) 
        <span style="color:#ff0000;">//将集合转换成数组</span>
        NSArray *touchArrary = [touches allObjects];
        //取出两个touch
        UITouch *touch1 = touchArrary[0];
        UITouch *touch2 = touchArrary[1];
        
        //取出touch当前所在的坐标
        CGPoint p1 = [touch1 locationInView:self.view];
        CGPoint p2 = [touch2 locationInView:self.view];
        
        //计算现在两点之间的距离
        CGFloat distance1 = [self distanceTwoPoint:p1 WithPoint:p2];
        
        //取得上两点的坐标
        CGPoint lastP1 = [touch1 previousLocationInView:self.view];
        CGPoint lastP2 = [touch2 previousLocationInView:self.view];
        
        //计算上两点之间的距离
        CGFloat distance2 = [self distanceTwoPoint:lastP1 WithPoint:lastP2];
        
        if (distance1 > distance2) 
            NSLog(@"放大了");
        else if (distance1 < distance2) 
            NSLog(@"缩小了");
        
        
    


//计算两点之间的距离
- (CGFloat)distanceTwoPoint:(CGPoint)p1 WithPoint:(CGPoint)p2 

    /*
     ((x1-x2)平方 + (y1 - y2)平方)开方
     */
    //取得x和y的值
    CGFloat x1 = p1.x;
    CGFloat y1 = p1.y;
    
    CGFloat x2 = p2.x;
    CGFloat y2 = p2.y;
    
    CGFloat distance = sqrtf(pow(x1-x2, 2) + pow(y1-y2, 2));
    
    return distance;
    
    


- (void)didReceiveMemoryWarning

    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.


/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.

*/

@end


以上是关于获取触摸的两点距离的主要内容,如果未能解决你的问题,请参考以下文章

坐标间获取两点距离

根据纬度/经度获取两点之间的距离

千题案例TypeScript获取两点之间的距离 | 中点 | 补点 | 向量 | 角度

百度地图 获取两点坐标之间的驾车距离(非直线距离) c#

使用 Haversine_formula 获取两点之间的距离

在 SceneKit/modelIO 中测量 3D-Obj 文件上两点之间的距离并显示它们