知道两个点,及半径,求圆与直线的交点
来源:互联网 发布:txt本地听书软件 编辑:程序博客网 时间:2024/05/02 02:24
local point1 = {['x'] = -1,['y'] = 0,}local point2= {['x'] = -1,['y'] = 1,}-- 获取斜截式直线(垂直x的直线不适用斜截式,因为斜率无限大)local GetKB = function(p1, p2)if p1.x == p2.x then return endlocal k, bk = (p2.y - p1.y)/(p2.x - p1.x)b = p1.y - (p1.x * (p2.y - p1.y) / (p2.x - p1.x))if p1.y == p2.y then k = 0 endreturn k, bend-- 获取以P1为圆心,r为半径的圆与p1 ,p2组成直线的交点local GetPoints = function(p1, p2, r)if p1.x == p2.x and p1.y == p2.y then return end --传入两个相同的点求不了local x1, y1, x2, y2local m, n = p1.x, p1.y -- 圆心坐标m, nif p1.x ~= p2.x thenlocal k, b = GetKB(p1, p2)local A, B, C -- 转换一元二次方程Ax^2 + Bx + C = 0A = 1 + k * kB = 2 * k * (b - n) - 2 * mC = m * m + (b - n) * (b - n) - r * rx1 = (-B + math.sqrt(math.pow(B, 2) - 4 * A * C)) / (2 * A)y1 = k * x1 + bx2 = (-B - math.sqrt(math.pow(B, 2) - 4 * A * C)) / (2 * A)y2 = k * x2 + belsex1 = mx2 = my1 = n + ry2 = n - rendlocal point1 , point2 = {}, {}point1.x, point1.y= x1, y1point2.x, point2.y= x2, y2print("x1:", x1)print("y1:", y1)print("x2:", x2)print("y2:", y2)return point1, point2endGetPoints(point1, point2, 1)
0 0
- 知道两个点,及半径,求圆与直线的交点
- 求过圆心直线与圆的两个交点
- 求过圆心直线与圆的两个交点
- 求过圆心直线与圆的两个交点(JAVA & OC)
- 求空间直线与平面的交点
- 求直线与平面的交点
- 直线与圆的交点
- 求直线(线段)与直线(线段)的交点
- 判断点在三角形区域内;求空间直线与平面的交点;
- C++ 实现已知直线上两个点求解直线方程,并求两条直线的交点
- 求两直线的交点
- 求两直线的交点
- 求两直线的交点
- 求两直线的交点
- 13.3输出给定一点p与圆心相连成的直线与圆的两个交点
- 13.3直线与圆的交点
- Coverage 圆与直线的交点
- [算法]直线与圆的交点程序设计
- 完美网络
- 使用sbt assembly构建Spark项目
- python学习(8)————读取文件
- office2007下载地址
- CodeForces 27E
- 知道两个点,及半径,求圆与直线的交点
- 最小生成树的两个模板
- Android中常用的数据存储方式
- Bug请在此留言。谢谢
- c++对象内存模型【内存布局】
- 安卓中关于spinner的使用
- 数组--数组两个数的差值为指定的值
- java中的字符流
- 面试题