`

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)导航到另一个视图控制器,以及如何传递数据和更新界面。描述中提到的具体场景是在登录页面完成身份验证后,跳转到显示用户...

    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:c7200-is-mz.122-19

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

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

    在PathMove for iOS项目中,源码会创建一个`UIBezierPath`对象,设置相应的控制点,并通过该路径指导视图的运动。 物体运动的实现: 为了让物体(如UIImageView中的图片)沿着贝塞尔曲线移动,我们可以利用Core ...

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

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

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

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

    ios抛物线缩放动画demo

    本项目"ios抛物线缩放动画demo"提供了一个基于CABasicAnimation、CAAnimationGroup和CAKeyframeAnimation实现的实例,展示了如何在Xcode 5.1.1环境下为iOS应用添加抛物线轨迹的缩放动画效果。下面将详细介绍这些关键...

    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` 是苹果...

    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)来实现这样一个圆环指示...

    几个IOS小工具

    在这个压缩包里,我们找到了几个专门用于iOS开发的小工具,包括图片处理工具、文件比对工具以及色彩管理工具。以下是对这些工具的详细介绍: 1. **Zwoptex**: 这是一款非常实用的iOS开发图像资源管理工具。Zwoptex...

Global site tag (gtag.js) - Google Analytics