`

iOS:几个实用方法:点间距离、点间角度、线间角度

 
阅读更多

#include <math.h>

#define pi 3.14159265358979323846
#define degreesToRadian(x) (pi * x / 180.0)
#define radiansToDegrees(x) (180.0 * x / pi)
CGFloat distanceBetweenPoints (CGPoint first, CGPoint second) {
    CGFloat deltaX = second.x - first.x;
    CGFloat deltaY = second.y - first.y;
    return sqrt(deltaX*deltaX + deltaY*deltaY );
};
CGFloat angleBetweenPoints(CGPoint first, CGPoint second) {
    CGFloat height = second.y - first.y;
    CGFloat width = first.x - second.x;
    CGFloat rads = atan(height/width);
    return radiansToDegrees(rads);
    //degs = degrees(atan((top - bottom)/(right - left)))
}
CGFloat angleBetweenLines(CGPoint line1Start, CGPoint line1End, CGPoint line2Start, CGPoint line2End) {
   
    CGFloat a = line1End.x - line1Start.x;
    CGFloat b = line1End.y - line1Start.y;
    CGFloat c = line2End.x - line2Start.x;
    CGFloat d = line2End.y - line2Start.y;
   
    CGFloat rads = acos(((a*c) + (b*d)) / ((sqrt(a*a + b*b)) * (sqrt(c*c + d*d))));
   
    return radiansToDegrees(rads);
   
}

 

分享到:
评论

相关推荐

    IOS: 两个页面相互转换

    标题"IOS: 两个页面相互转换"涉及的是在iOS应用中如何从一个视图控制器(View Controller)导航到另一个视图控制器,以及如何传递数据和更新界面。描述中提到的具体场景是在登录页面完成身份验证后,跳转到显示用户...

    SuperMap iMobile for iOS : 数据编辑

    **SuperMap iMobile for iOS: 数据编辑** 在GIS(地理信息系统)领域,移动平台的数据编辑功能日益重要,尤其是在iOS设备上。SuperMap iMobile for iOS 是一款专为苹果设备设计的专业GIS应用程序,它允许用户在野外...

    iOS 超级实用K线图

    为了实现K线图,开发者需要掌握以下几个关键技术点: 1. 数据模型:定义K线数据结构,通常包括日期、开盘价、收盘价、最高价和最低价等属性。例如,可以创建一个名为`StockData`的类来存储这些信息。 2. 数据源:...

    iOS贝塞尔曲线,折线,曲线,波浪线

    通常,开发者会创建一个`UIBezierPath`实例,然后添加曲线、折线或波浪线的路径,最后设置线条的颜色、宽度和样式,然后调用`stroke`或`fill`方法进行绘制。同时,为了响应用户的触摸交互或数据变化,可能还需要动态...

    GNS3模拟器IOS:c3725-ipbasek9-mz.124-25

    GNS3模拟器IOS:c3725-ipbasek9-mz.124-25

    GNS3模拟器IOS:c3745-ik9s-mz.123-13a

    GNS3模拟器IOS:c3745-ik9s-mz.123-13a

    IOS应用源码——贝塞尔曲线demo:一个运动的物体:PathMove for iOS.rar

    这个“PathMove for iOS”的源码示例提供了对贝塞尔曲线的深入理解和实践应用。 首先,我们需要理解什么是贝塞尔曲线。贝塞尔曲线(Bézier curve)是由法国工程师皮埃尔·贝塞尔(Pierre Bézier)提出的数学曲线...

    GNS3模拟器IOS:c3640-jk9o3s-mz.124-10a

    标题中的“GNS3模拟器IOS:c3640-jk9o3s-mz.124-10a”指的是一个用于网络设备模拟的软件——GNS3(图形化网络模拟器3),其中包含了Cisco Catalyst 3640路由器的操作系统镜像文件,即IOS(Internetwork Operating ...

    ios-贝塞尔曲线动画.zip

    通过创建`CAKeyframeAnimation`实例,开发者可以定义基于关键帧的动画,其中每个关键帧对应贝塞尔曲线的一个点,动画会自动计算出两点间的插值,生成平滑的过渡。 在MCCircleView的实现中,开发者可能将贝塞尔曲线...

    IOS 20个实用例子.zip

    -- 使用Delegate在两个ViewController间传值 -- 内存泄露Demo leaky app -- iOS上拉加载更多的实现 -- iOS视频通话/直播demo -- 数据库操作(使用FMDB) -- iOS图文混排(模仿新浪微博) -- IOS高仿微信聊天对话界面 -...

    ios-PageViewController简单实用.zip

    这个“ios-PageViewController简单实用.zip”压缩包包含了一个名为“FYLPageViewController”的示例项目,旨在帮助开发者理解如何在实际应用中有效地使用`UIPageViewController`。 `UIPageViewController` 是苹果...

    GNS3模拟器IOS:c7200-is-mz.122-19

    GNS3模拟器IOS:c7200-is-mz.122-19

    IOS图片多选简单实用

    在iOS中,图片选择通常涉及到以下几个关键知识点: 1. **UIImagePickerViewController**:苹果官方提供的图片选择控制器,可以用来让用户从相册中选择单张图片。但默认情况下不支持多选,因此在实现多选功能时,...

    ios-动画绘制曲线.zip

    对于折线图,关键在于确定每个数据点的位置并连接成线;而对于柱状图,需要计算每个柱子的宽度和高度,再进行绘制。 总的来说,这个压缩包中的示例代码和资源为开发者提供了一套完整的解决方案,帮助他们理解和实践...

    iOS 代理传值简单demo

    在这个“iOS 代理传值简单demo”中,我们将探讨如何使用代理协议(Delegate Protocol)来实现界面间的数据传递,这对于初学者理解Objective-C或Swift中的代理机制非常有帮助。 首先,让我们了解代理的基本概念。...

    iOS自己用的几个demo

    标题为“iOS自己用的几个demo”揭示了几个关键的学习领域,这些领域对于任何iOS开发者来说都具有基础性且实用的价值。描述中提到了“各种传值方法”,“json和xml的解析方法”,“网络异步多线程请求”,“文件IO”...

    iOS折线渐变填充绘制动效

    `addQuadCurve(to:controlPoint:)`方法用于添加二次贝塞尔曲线,它需要一个控制点来决定曲线的形状。 3. **动画效果**:为了实现线变为折线的动画,我们可以使用`UIView.animate(withDuration:animations:)`方法。...

    iOS蓝牙传输数据

    在iOS平台上,蓝牙技术是一种广泛使用的短距离无线通信方式,用于设备间的数据交换。通过iOS的Core Bluetooth框架,开发者可以创建应用,使用户能够搜索、连接到其他支持蓝牙低功耗(Bluetooth Low Energy, BLE)的...

    iOS 利用贝塞尔曲线实现的圆环进度指示器

    在iOS开发中,创建美观且功能丰富的用户界面是至关重要的,而圆环进度指示器是一种常见且实用的组件,常用于展示数据加载、任务完成度等。本篇将深入探讨如何利用贝塞尔曲线(Bezier Curve)来实现这样一个圆环指示...

    iosdevices:苹果设备类型的iOS设备模型转换

    安装将此行添加到您的应用程序的Gemfile中: gem 'ios-devices' 然后执行: $ bundle或将其自己安装为: $ gem install ios-devices用法只需将Ios::Devices.search方法与Apple字符串一起使用,您将获得一个Ios::...

Global site tag (gtag.js) - Google Analytics