主要计算公式:

直线的一般方程      y = kx + b;

圆的一般方程        x^2 + y^2 + Dx + Ey + F = 0;

圆的基本系数关系     r = (根号(D^2 + E^2 - 4F))/2

一元二次方程求根公式    x = -b (+/-) (根号(b^2 - 4ac)) / 2a

/**

计算圆环上取色点,解任意点过圆心的直线与圆的交点取其一

@param pointOne 任意点

@param circleCenterPoint 圆心

*/

- (CGPoint)calculateColorPointWithPoint:(CGPoint)pointOne circleCenterPoint:(CGPoint)circleCenterPoint

{

//由于OC坐标系与数学坐标系的差异,y值取反,转成数学坐标系

CGPointtemp1 = pointOne;

CGPointtemp2 = circleCenterPoint;

pointOne =CGPointMake(temp1.x, -temp1.y);

circleCenterPoint =CGPointMake(temp2.x, -temp2.y);

//计算过圆心直线斜率和常数b

lineK= (CGFloat)(pointOne.y- circleCenterPoint.y) / (CGFloat)(pointOne.x- circleCenterPoint.x);

lineB= circleCenterPoint.y-lineK*circleCenterPoint.x;

//计算圆的方程常数  其圆心坐标(-D/2, -E/2)  半径公式 r = (根号(D^2 + E^2 - 4F))/2

CGFloatcircleR = circleCenterPoint.x-4;//圆的半径,取圆环的中间值

circleD= -2* circleCenterPoint.x;

circleE= -2* circleCenterPoint.y;

circleF= (powf(circleD,2) +powf(circleE,2) -4*powf(circleR,2))/4.0;

//一元二次方程求根公式    x = -b (+/-) (根号(b^2 - 4ac)) / 2a

CGFloata = (1+powf(lineK,2));

CGFloat b = (2*lineK*lineB + circleD + circleE*lineK);

CGFloat c = powf(lineB, 2) + circleE*lineB + circleF;

//直线与圆的两个交点

CGFloatx1 = ((-b) +sqrtf(powf(b,2) -4*a*c)) / (2*a);

CGFloaty1 =lineK*x1 +lineB;

CGFloatx2 = ((-b) -sqrtf(powf(b,2) -4*a*c)) / (2*a);

CGFloaty2 =lineK*x2 +lineB;

//当过圆心直线斜率不存在时

if(pointOne.x== circleCenterPoint.x) {

x1 = circleCenterPoint.x;

y1 = -4;

x2 = circleCenterPoint.x;

y2 = -(2*circleR +4);

}

//两个交点点到触发点的距离

CGFloatdistance1 =sqrtf(powf(x1 - pointOne.x,2) +powf(y1 - pointOne.y,2));

CGFloatdistance2 =sqrtf(powf(x2 - pointOne.x,2) +powf(y2 - pointOne.y,2));

//选择距离近的, 由于OC坐标系与数学坐标系的差异,y值取反转成OC坐标系

CGPointintersectPoint1 =CGPointMake(x1, -y1);

CGPointintersectPoint2 =CGPointMake(x2, -y2);

if(distance1 < distance2) {

returnintersectPoint1;

}

else{

returnintersectPoint2;

}

}

matlab过圆心的直线,iOS计算过圆心直线与圆的交点相关推荐

  1. python计算能够包含两个圆的最小圆

    给定两个圆的圆心和半径,计算能够包含两个圆的最小圆 # Defines two classes, Point() and Disk(). # The latter has an "area& ...

  2. 一种简单高效的灰度图画圆方法——使用MATLAB实现每个像素点只计算一次就把圆画出来

    初衷 今天有同学问我:怎么在灰度图上画一个圆? 我想:OpenCV不是直接有画圆的函数吗?哦,他是MATLAB. 我搜了一下好像没有内置的(没仔细找,可能没看到),别人手工写的算法都是遍历整副图像才可 ...

  3. python计算直线与圆的交点,不用第三方库,方便迁移其他语言

    python求圆和线段/直线的交点 计算直线与圆的交点,不用第三方库,方便迁移其他语言 主要应用:图像及几何计算应用 计算直线与圆的交点,不用第三方库,方便迁移其他语言 主要应用:图像及几何计算应用 ...

  4. matlab语句运算相关论文,等于计算论文,关于MATLAB在瑞典条分法中的应用相关参考文献资料-免费论文范文...

    导读:该文是关于等于计算论文范文,为你的论文写作提供相关论文资料参考. (1.河海大学 港口航道与近海工程学院,江苏 南京 210098: 2..河海大学 土木与交通学院,江苏 南京 210098) ...

  5. iOS计算输入字符数

    2019独角兽企业重金招聘Python工程师标准>>> iOS计算输入字符数 本文展示在iOS下,如何正确的计算输入的字符个数. 常见编码 汉字.中文符号 UTF-8编码下,一个汉字 ...

  6. JAVA计算两条直线的交点(判断两条线段相交)

    //计算两条直线的交点 //输入四个点,前两个点确定线段1,后两个点确定线段2 //输出交点坐标 public class Main{public static void main(String ar ...

  7. 计算三维空间中直线和三角形的交点

    计算三维空间中直线和三角形的交点 前言 一.计算平面方程 1.1 平面不过原点 1.2 平面过原点 1.3 平面过 zzz 轴 1.4 平面为 yOzyOzyOz 平面 二.计算直线方程 三.计算交点 ...

  8. matlab求三维图形表面积,基于MATLAB的不规则平面立体表面积计算

    ·12· 设计与研究 机械 2012 年第 2 期 总第 39 卷 --------------- 收稿日期:2011-06-10 作者简介:和蕴锋(1988-),女,河南漯河人,硕士研究生,主要研究 ...

  9. matlab计算系统过渡过程时间,MATLAB在水电站水力过渡过程计算仿真中的应用

    一.引言水电站水力过渡过程是水.机.电系统相互影响.相互制约的复杂过渡过程,也是水电站实际工作过程中不可避免的一种特殊运行工况.特别是水轮机甩负荷计算是水电站和水力机组设计不可缺少的一项工作.虽然采用 ...

最新文章

  1. MyBatis根据数组、集合查询
  2. 高中计算机室名言,高中教室励志标语名言
  3. C和C++中include 搜索路径的一般形式以及gcc搜索头文件的路径
  4. [蓝桥杯2015决赛]胡同门牌号-模拟+枚举
  5. sql between的用法的意思_SQL 宝典——SQL 语法速成手册
  6. Demo3D详解-----附下载地址
  7. openv-p-n服务端安装
  8. 考勤系统 服务器管理,zktime5.0考勤管理系统
  9. 易福门SM6004电磁流量计
  10. bspline怎么使用 python_B-Spline曲线拟合
  11. 运动垫的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  12. 20145236 《Java程序设计》第4周学习总结
  13. ZABBIX 3.0 使用详解
  14. ios开发 服务器通信协议,iOS开发之网络协议TCP/IP、HTTP
  15. Deep Mind 团队论文Playing Atari with Deep Reinforcement Learning复现
  16. 父窗口操控iframe
  17. Transfer Learning - Overview(详细讲解)
  18. Apriori算法Matlab实现
  19. JQuery之工具类函数
  20. 赶超磁盘的磁带备份技术 1

热门文章

  1. 微信小程序云开发服务怎么关闭?
  2. HTTP(S)网络框架的设计
  3. Postman基于Chrome扩展插件安装
  4. linux 安装 宝塔面板
  5. 【文献笔记】《使用深度卷积神经网络预估剩余有用寿命》
  6. 引用NOPI 按excel模版 导出EXCEL类
  7. FPGA USB FX2 ov5640摄像头视频采集 驱动CY7C68013A实现 提供2套工程源码和技术支持
  8. android r.id 自定义,什么是“ android.R.id.text1”?
  9. 目标检测YOLO实战应用案例100讲-基于轻量化神经网络的目标检测算法研究与应用
  10. MOOC数据结构(下)(自主模式)-重名剔除(Deduplicate)