当前位置: 首页 > news >正文

利用圆上两点和圆半径求解圆心坐标

已知圆上两点P1,P2,坐标依次为 ( x 1 , y 1 ) , ( x 2 , y 2 ) (x_1,y_1),(x_2,y_2) (x1,y1),(x2,y2),圆的半径为 r r r,求圆心的坐标。
在这里插入图片描述
假定P1,P2为任意两点,则两点连成线段的中点坐标是
x m i d = ( x 1 + x 2 ) / 2 x_{mid} = (x_1+x_2)/2 xmid=(x1+x2)/2
y m i d = ( y 1 + y 2 ) / 2 y_{mid} = (y_1+y_2)/2 ymid=(y1+y2)/2
P1,P2连线的斜率是
k = ( y 1 − y 2 ) / ( x 1 − x 2 ) k = (y_1-y_2)/(x_1-x_2) k=(y1y2)/(x1x2)
P1,P2连线的垂线斜率为
m = − 1 / k m = -1/k m=1/k
则,圆心所在的直线方程是
y − y m i d = m ∗ ( x − x m i d ) y-y_{mid} = m * (x - x_{mid}) yymid=m(xxmid)

圆心 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)同时满足
( x 0 − x 1 ) 2 + ( y 0 − y 1 ) 2 = r 2 (x_0-x_1)^2+(y_0-y_1)^2=r^2 (x0x1)2+(y0y1)2=r2 y 0 − y m i d = m ∗ ( x 0 − x m i d ) y_0-y_{mid} = m * (x_0 - x_{mid}) y0ymid=m(x0xmid)

( x 0 − x 2 ) 2 + ( y 0 − y 2 ) 2 = r 2 (x_0-x_2)^2+(y_0-y_2)^2=r^2 (x0x2)2+(y0y2)2=r2 y 0 − y m i d = m ∗ ( x 0 − x m i d ) y_0-y_{mid} = m * (x_0 - x_{mid}) y0ymid=m(x0xmid)

将直线方程
y 0 = m ∗ ( x 0 − x m i d ) − y m i d y_0 = m*(x_0 -x_{mid})-y_{mid} y0=m(x0xmid)ymid
代入圆的公式,
得到
( x 0 − x 1 ) 2 + [ m ∗ ( x 0 − x m i d ) + y m i d − y 1 ] 2 = r 2 (x_0-x_1)^2+[m * (x_0-x_{mid})+y_{mid}-y_1]^2=r^2 (x0x1)2+[m(x0xmid)+ymidy1]2=r2

展开,
x 0 2 − 2 x 0 x 1 + x 2 2 + m 2 x 0 2 + 2 m x 0 ∗ ( y m i d − m ∗ x m i d − y 1 ) + ( y m i d − m ∗ x m i d − y 1 ) 2 = r 2 x_0^2-2x_0x_1+x_2^2+m^2x_0^2+2mx_0*(y_{mid}-m*x_{mid}-y_1)+(y_{mid}-m*x_{mid}-y_1)^2=r^2 x022x0x1+x22+m2x02+2mx0(ymidmxmidy1)+(ymidmxmidy1)2=r2

整理,
( 1 + m 2 ) x 0 2 + [ 2 m ( y m i d − m ∗ x m i d − y 1 ) − 2 x 1 ] ∗ x 0 + ( y m i d − m ∗ x m i d − y 1 ) 2 + x 1 2 − r 2 = 0 (1+m^2)x_0^2+[2m(y_{mid}-m*x_{mid}-y_1)-2x_1]*x_0+(y_{mid}-m*x_{mid}-y_1)^2+x_1^2-r^2 = 0 (1+m2)x02+[2m(ymidmxmidy1)2x1]x0+(ymidmxmidy1)2+x12r2=0

令,
A = 1 + m 2 A= 1+m^2 A=1+m2
B = 2 m ( y m i d − m ∗ x m i d − y 1 ) − 2 x 1 B= 2m(y_{mid}-m*x_{mid}-y_1)-2x_1 B=2m(ymidmxmidy1)2x1
C = ( y m i d − m ∗ x m i d − y 1 ) 2 + x 1 2 − r 2 C= (y_{mid}-m*x_{mid}-y_1)^2+x_1^2-r^2 C=(ymidmxmidy1)2+x12r2

则,
x 0 = − B ± B 2 − 4 A C 2 A x_0=\frac{-B± \sqrt{B^2-4AC}}{2A} x0=2AB±B24AC
y 0 = m ∗ ( x 0 − x m i d ) + y m i d y_0= m*(x_0-x_{mid})+y_{mid} y0=m(x0xmid)+ymid

x_1 = 2
y_1 = 4
x_2 = 4
y_2 = 2
r = 2
if (x_1 - x_2 == 0):print('横坐标相同,求解可能出错')exit()
else:x_mid = (x_1 + x_2) / 2y_mid = (y_1 + y_2) / 2k = (y_1-y_2)/(x_1-x_2)m = -1/kA = 1 + m**2B = 2 * m *(y_mid - m * x_mid - y_1)- 2 * x_1C = (y_mid - m * x_mid - y_1)**2 + x_1**2 - r**2print(A, B, C)x_c1 = (-B + ((B**2-4*A*C)**0.5))/(2*A)x_c2 = (-B - ((B**2-4*A*C)**0.5))/(2*A)y_c1 = m * (x_c1 - x_mid) + y_midy_c2 = m * (x_c2 - x_mid) + y_midprint('圆心坐标:',(x_c1,y_c1))print('圆心坐标:',(x_c2,y_c2))

运行结果:
在这里插入图片描述
InsCode

相关文章:

利用圆上两点和圆半径求解圆心坐标

已知圆上两点P1,P2,坐标依次为 ( x 1 , y 1 ) , ( x 2 , y 2 ) (x_1,y_1),(x_2,y_2) (x1​,y1​),(x2​,y2​),圆的半径为 r r r,求圆心的坐标。 假定P1,P2为任意两点,则两点连成线段的中点坐标是 x m i …...

从ChatGPT代码执行逃逸到LLMs应用安全思考

摘要 11月7日OpenAI发布会后,GPT-4的最新更新为用户带来了更加便捷的功能,包括Python代码解释器、网络内容浏览和图像生成能力。这些创新不仅开辟了人工智能应用的新境界,也展示了GPT-4在处理复杂任务方面的惊人能力。然而,与所有…...

Python入门-基础知识-变量

1.标识符与关键字 Python语言规定,标识符由字母、数字和下画线组成,且不允许以数字开头。合法的标识符可以 是student_1、 addNumber、num等,而3number、2_student等是不合法的标识符。在使用标识符时应注意以下几点。 (1)命名时应遵循见名知…...

设计模式原则——接口隔离原则

设计模式原则 设计模式示例代码库地址: https://gitee.com/Jasonpupil/designPatterns 接口隔离原则 要求程序员尽量将臃肿庞大的接口拆分为更小的和更具体的接口,让接口中只包含客户感兴趣的方法接口隔离原则的目标是降低类或模块之间的耦合度&…...

MySQL数据库——在Centos7环境安装

MySQL在Centos7环境安装 1.切换root用户 安装与卸载中,用户全部切换成为root,安装好后,普通用户也能使用 2.卸载不要的环境 要将自己环境中有关mysql的全都删除,避免安装过程中被影响 ps axj | grep mariadb 先检查是否有mari…...

怎样规避液氮容器内部结霜的问题

液氮容器内部结霜问题一直是我们在使用液氮储存罐时遇到的一个棘手难题。液氮的极低温度使得容器内部很容易产生结霜现象,这不仅影响了容器的正常使用,还可能对内部样品或设备造成损坏。因此,如何有效规避液氮容器内部结霜问题成为了每个使用…...

冶金工业5G智能工厂工业物联数字孪生平台,推进制造业数字化转型

冶金工业5G智能工厂工业物联数字孪生平台,推进制造业数字化转型。传统生产方式难以满足现代冶金工业的发展需求,数字化转型成为必然趋势。通过引入5G、工业物联网和数字孪生等先进技术,冶金工业可以实现生产过程智能化、高效化和绿色化&#…...

一文入门机器学习参数调整实操

作者前言: 通过向身边的同事大佬请教之后,大佬指点我把本文的宗旨从“参数调优”改成了“参数调整”。实在惭愧,暂时还没到能“调优”的水平,本文只能通过实操演示“哪些操作会对数据训练产生影响”,后续加深学习之后,…...

基于51单片机的银行排队呼叫系统设计

一.硬件方案 本系统是以排队抽号顺序为核心,客户利用客户端抽号,工作人员利用叫号端叫号;通过显示器及时显示当前所叫号数,客户及时了解排队信息,通过合理的程序结构来执行排队抽号。电路主要由51单片机最小系统LCD12…...

JXCategoryView的使用总结

一、初始化 -(JXCategoryTitleView *)categoryView{if (!_categoryView) {_categoryView [[JXCategoryTitleView alloc] init];_categoryView.delegate self;_categoryView.titleDataSource self;_categoryView.averageCellSpacingEnabled NO; //是否平均分配项目之间的间…...

Centos9 安装VBox增强功能问题

安装步骤 更新gcc 首先手动更新gcc,防止无法兼容最新版本的内核,我这里将gcc 11更新到gcc 13 1.首先更新当前gcc和支持 yum install -y gcc gcc-c 2.下载新版本gcc压缩包 wget http://ftp.gnu.org/gnu/gcc/gcc-13.1.0/gcc-13.1.0.tar.gz 解压到usr ta…...

【JVM】Java虚拟机运行时数据分区介绍

JVM 分区(运行时数据区域) 文章目录 JVM 分区(运行时数据区域)前言1. 程序计数器2. Java 虚拟机栈3. 本地方法栈4. Java 堆5. 方法区6. 运行时常量池7. 直接内存 前言 之前在说多线程的时候,提到了JVM虚拟机的分区内存…...

大数据面试题之Kafka(2)

目录 Kafka的工作原理? Kafka怎么保证数据不丢失,不重复? Kafka分区策略 Kafka如何尽可能保证数据可靠性? Kafka数据丢失怎么处理? Kafka如何保证全局有序? 生产者消费者模式与发布订阅模式有何异同? Kafka的消费者组是如何消费数据的 Kafka的…...

前端面试题(基础篇十一)

一、DOCTYPE 的作用是什么&#xff1f; <!DOCTYPE> 声明一般位于文档的第一行&#xff0c;它的作用主要是告诉浏览器以什么样的模式来解析文档。一般指定了之后会以标准模式来进行文档解析&#xff0c;否则就以兼容模式进行解析。在标准模式下&#xff0c;浏览器的解析规…...

【论文阅读】Answering Label-Constrained Reachability Queries via Reduction Techniques

Cai Y, Zheng W. Answering Label-Constrained Reachability Queries via Reduction Techniques[C]//International Conference on Database Systems for Advanced Applications. Cham: Springer Nature Switzerland, 2023: 114-131. Abstract 许多真实世界的图都包含边缘标签…...

Git Flow 工作流学习要点

Git Flow 工作流学习要点 Git Flow — 流程图Git Flow — 操作指令优点&#xff1a;缺点&#xff1a;Git Flow 分支类型Git Flow 工作流程简述关于 feature 分支关于 Release 分支关于 hotfix 分支 总结 Git Flow — 流程图 图片来源&#xff1a;https://nvie.com/posts/a-succ…...

blender 快捷键 常见问题

一、快捷键 平移视图&#xff1a;Shift 鼠标中键旋转视图&#xff1a;鼠标中键缩放视图&#xff1a;鼠标滚动框选放大模型&#xff1a;Shift B线框预览和材质预览切换&#xff1a;Shift Z 二、常见问题 问题&#xff1a;导入模型成功&#xff0c;但是场景中看不到。 解…...

HTTP详解:TCP三次握手和四次挥手

一、TCP协议概述 TCP协议是互联网协议栈中传输层的核心协议之一&#xff0c;它提供了一种可靠的数据传输方式&#xff0c;确保数据包按顺序到达&#xff0c;并且没有丢失或重复。TCP的主要特点包括&#xff1a; 面向连接&#xff1a;TCP在传输数据之前需要建立连接。可靠传输&…...

详解HTTP:有了HTTP,为何需要WebSocket?

在日常生活中&#xff0c;HTTP 常用于请求数据。例如&#xff0c;当你打开一个天气预报网站时&#xff0c;浏览器会发送一个 HTTP 请求到服务器&#xff0c;请求当前的天气数据&#xff0c;服务器返回响应&#xff0c;浏览器解析并显示这些数据。 但是&#xff0c;当涉及到需要…...

Spring Boot 启动流程是怎么样的

引言 SpringBoot是一个广泛使用的Java框架&#xff0c;旨在简化基于Spring框架的应用程序的开发过程。在这篇文章中&#xff0c;我们将深入探讨SpringBoot应用程序的启动流程&#xff0c;了解其背后的机制。 Spring Boot 启动概览 SpringBoot应用程序的启动通常从一个包含 m…...

低功耗电源开关电路设计与MCU控制实现

1. 经典电源开关电路设计与分析1.1 系统架构概述该电源开关电路采用三级晶体管控制架构&#xff0c;实现以下核心功能&#xff1a;低功耗待机模式&#xff08;静态电流<10μA&#xff09;按键触发启动机制MCU控制的自锁功能软件可控的电源关断系统工作电压为9V输入&#xff…...

岗亭厂家直销:揭秘源头工厂如何帮你省下30%采购成本

在2026年1月的今天&#xff0c;户外岗亭作为城市管理、社区安防及商业服务的关键节点&#xff0c;其市场需求持续增长。然而&#xff0c;行业在快速发展的同时&#xff0c;也暴露出一些亟待解决的技术与成本挑战。从技术层面看&#xff0c;传统岗亭产品普遍面临结构稳定性不足、…...

前端拖拽交互实现:别再只会用原生拖拽了

前端拖拽交互实现&#xff1a;别再只会用原生拖拽了 毒舌时刻这代码写得跟网红滤镜似的——仅供参考。各位前端同行&#xff0c;咱们今天聊聊前端拖拽交互。别告诉我你还在用原生的HTML5拖拽API&#xff0c;那感觉就像在用诺基亚手机——能打电话&#xff0c;但体验太差。 为什…...

AIGC时代,程序员会被取代吗?我的看法与行动建议

AIGC时代&#xff0c;程序员会被取代吗&#xff1f;我的看法与行动建议 随着AI生成内容&#xff08;AIGC&#xff09;技术的迅猛发展&#xff0c;许多人开始担忧&#xff1a;程序员这一职业是否会被AI取代&#xff1f;从代码生成工具GitHub Copilot到对话式编程助手ChatGPT&am…...

Matlab实战:5步搞定微电网源储荷协调调度(附完整CPLEX调用代码)

Matlab实战&#xff1a;微电网源储荷协调调度的5个工程化技巧 微电网调度是新能源时代的核心技术难题之一。面对风光发电的波动性和负荷需求的多变性&#xff0c;如何实现源、储、荷三者的动态平衡&#xff0c;成为电力工程师们每天都要应对的挑战。不同于学术论文中复杂的理论…...

Windows系统优化新范式:Win11Debloat技术原理与实践指南

Windows系统优化新范式&#xff1a;Win11Debloat技术原理与实践指南 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本&#xff0c;用于从Windows中移除预装的无用软件&#xff0c;禁用遥测&#xff0c;从Windows搜索中移除Bing&#xff0c;以及执行各种其他更改以简化和…...

GitHub加速工具:解决开发者访问难题的终极方案

GitHub加速工具&#xff1a;解决开发者访问难题的终极方案 【免费下载链接】fetch-github-hosts &#x1f30f; 同步github的hosts工具&#xff0c;支持多平台的图形化和命令行&#xff0c;内置客户端和服务端两种模式~ | Synchronize GitHub hosts tool, support multi-platfo…...

antd vue表单实战:getFieldDecorator、getFieldValue、setFieldValue保姆级教程

Ant Design Vue 表单开发深度指南&#xff1a;数据绑定与动态操作实战 在当今前端开发领域&#xff0c;表单处理一直是构建交互式应用的核心挑战之一。Ant Design Vue 作为企业级 UI 设计语言和 React 实现&#xff0c;提供了一套强大而灵活的表单解决方案&#xff0c;特别适合…...

嵌入式系统SOC验证与Linux实时补丁技术解析

嵌入式系统软件工程师面试技术要点解析 1. SOC原型验证技术体系 1.1 SOC验证工作内容与方法论 SOC原型验证是芯片设计流程中的关键环节&#xff0c;主要工作内容包括&#xff1a; 功能验证&#xff1a;确保设计符合规范要求 性能验证&#xff1a;评估系统吞吐量、延迟等指标…...

终极解决方案:uesave-rs 让你轻松编辑虚幻引擎游戏存档

终极解决方案&#xff1a;uesave-rs 让你轻松编辑虚幻引擎游戏存档 【免费下载链接】uesave 项目地址: https://gitcode.com/gh_mirrors/ue/uesave 还在为游戏存档损坏而抓狂吗&#xff1f;面对一堆看不懂的二进制数据&#xff0c;想要修改游戏进度却无从下手&#xff…...