iOS 求三点夹角
2015-12-03 00:00
489 查看
下边这个是原公式, 已知ABC三点,求 B 作为中间点时,也就是 ABC的夹角,注意和 BAC夹角的区别
// x1 = A.x-B.x ; y1 = A.y-B.y
// x2 = C.x-B.x ; y2 = C.y-B.y
// x = x1*x2+y1*y2
// y = x1*y2-x2*y1
// if(x > 0 )
//角度<90
// else
//角度>=90
// angle = acos(x/sqrt(x*x+y*y));
代码中需要求 AB两点组成的线和水平线的夹角,于是代码改成了这样
-(CGFloat)getAngleOfThreePointA:(CGPoint)A :(CGPoint)B :(CGPoint)C
{
CGFloat x1 = A.x - B.x;
CGFloat y1 = A.y - B.y;
CGFloat x2 = C.x - B.x;
CGFloat y2 = C.y - B.y;
CGFloat x = x1 * x2 + y1 * y2;
CGFloat y = x1 * y2 - x2 * y1;
CGFloat angle;
if(x > 0)
{
angle = acos(x / sqrt(x * x + y * y));
}
else
{
angle = acos(x / sqrt(x * x + y * y));
}
//NSLog(@"%.2f", angle);
return angle;
}
// x1 = A.x-B.x ; y1 = A.y-B.y
// x2 = C.x-B.x ; y2 = C.y-B.y
// x = x1*x2+y1*y2
// y = x1*y2-x2*y1
// if(x > 0 )
//角度<90
// else
//角度>=90
// angle = acos(x/sqrt(x*x+y*y));
代码中需要求 AB两点组成的线和水平线的夹角,于是代码改成了这样
-(CGFloat)getAngleOfThreePointA:(CGPoint)A :(CGPoint)B :(CGPoint)C
{
CGFloat x1 = A.x - B.x;
CGFloat y1 = A.y - B.y;
CGFloat x2 = C.x - B.x;
CGFloat y2 = C.y - B.y;
CGFloat x = x1 * x2 + y1 * y2;
CGFloat y = x1 * y2 - x2 * y1;
CGFloat angle;
if(x > 0)
{
angle = acos(x / sqrt(x * x + y * y));
}
else
{
angle = acos(x / sqrt(x * x + y * y));
}
//NSLog(@"%.2f", angle);
return angle;
}
相关文章推荐
- iOS编程:学习篇(四)
- 0基础学习iOS的一些感想
- ios中@class和 #import
- NSDATA如何转成NSString
- iOS中如何判断是否有网络
- storyboard的简单应用
- SKView,SKScene,SKSpriteNode和SKAction的认识
- ios读取网络图片数据
- ios怎么做page(分页)
- iOS编程上获取本地时间以及星期几时间
- iOS开发CoreGraphics核心图形框架之八——层聚合
- iOS开发CoreGraphics核心图形框架之一——CGPath的应用
- 绘图+缩放
- iOS CoreAnimation专题——技巧篇(四)平面向量 - 优雅的绘图指挥家
- UIGraphicsGetCurrentContext 和CGBitmapContextCreate 使用CGContextAddArc的奇怪处
- SJGestureUnlock快速集成手势解锁
- CGContext小记
- iOS绘图教程
- UIButton中imageView和titleLabel的位置调整
- 进度圆环—支持点击