三个点确定一个圆

article/2025/11/6 22:29:41

首先假设圆心为(x0, y0),半径为r。则这个圆可以表示为:

  • (xx0)2+(yy0)2=r2

假设知道的三个点为(x1, y1),(x2,y2),(x3,y3)。那么:

  • (x1x0)2+(y1y0)2=r2
  • (x2x0)2+(y2y0)2=r2
  • (x3x0)2+(y3y0)2=r2

消去 r2 后变成

  • (x1x0)2+(y1y0)2=(x2x0)2+(y2y0)2
  • (x1x0)2+(y1y0)2=(x3x0)2+(y3y0)2

将未知量x0,y0移到左边就变为

  • (x1x2)x0+(y1y2)y0=(x12x22)+(y12y22)2
  • (x1x3)x0+(y1y3)y0=(x12x32)+(y12y32)2

首先我们要确定这个方程是不是有解,很简单,即判断行列式

  • (x1x2)(x1x3)(y1y2)(y1y3)0

设两个常量a1,a2

  • a1=(x12x22)+(y12y22)2
  • a2=(x12x32)+(y12y32)2

那么

  • x0=(y1y2)a2(y1y3)a1(y1y2)(x1x3)(x1x2)(y1y3)
  • y0=(x1x3)a1(x1x2)a2(y1y2)(x1x3)(x1x2)(y1y3)

最后代码如下

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
#www.coordinate.wang
def circle(x1, y1, x2, y2, x3, y3):a = x1 - x2b = y1 - y2c = x1 - x3d = y1 - y3a1 = ((x1 * x1 - x2 * x2) + (y1 * y1 - y2 * y2)) / 2.0a2 = ((x1 * x1 - x3 * x3) + (y1 * y1 - y3 * y3)) / 2.0theta = b * c - a * d;if abs(theta) < 1e-7:return -1x0 = (b * a2 - d * a1) / theta;y0 = (c * a1 - a * a2) / theta;r = np.sqrt(pow((x1 - x0), 2)+pow((y1 - y0), 2))fig = plt.figure()ax = fig.add_subplot(111)cir = Circle(xy = (x0, y0), radius = r, alpha=0.4)ax.add_patch(cir)plt.axis('scaled')plt.axis('equal')plt.plot(x1,y1,'r*',x2,y2,'r*',x3,y3,'r*')plt.show()circle(0, 0, 0, 1, 1, 0)

结果为




http://chatgpt.dhexx.cn/article/s89lDVwn.shtml

相关文章

三点确定一个圆的计算方法

最近在看recast&detour源码的时候有遇到许多数学上的算法问题&#xff0c;特此记录&#xff0c;以便以后查看。 推导过程 问题&#xff1a; 求点p1 p2 p3三点确定的圆的 圆心c 和 半径r 。 思路&#xff1a; 为了方便求解&#xff0c;将坐标系原点平移到p1点。 即新的…

三点确定一个圆(Apple HDU - 6206)(计算几何+高精度)

传送门 三点确定一个圆的计算方法 设一个圆的圆心坐标为(x0,y)&#xff0c;半径为r。那么这个圆的方程可以写成 (x-x0)^2(y-y0)^2r^2 在这个圆上随便取三个点&#xff0c;设这三个点的坐标分别为(x1,y1),(x2,y2),(x3,y3)。那么有 公式(1)(2)相减&#xff0c;(1)(3)相减经过…

与圆有关的位置关系

与圆有关的位置关系 主讲&#xff1a;黄冈中学高级教师 余国琴 知识强化 一、知识概述 1、点和圆的位置关系 如果圆的半径为r&#xff0c;已知点到圆心的距离为d&#xff0c;则可用数量关系表示位置关系&#xff0e; (1)d&#xff1e;r点在圆外&#xff1b; (2)dr点在圆上&a…

三点定圆原理与C++实现

文章目录 1 原理2 C实现 1 原理 根据我们小学二年级就学过的三点定圆定理&#xff1a; 不 共 线 的 三 个 点 可 唯 一 确 定 一 个 圆 不共线的三个点可唯一确定一个圆 不共线的三个点可唯一确定一个圆 且&#xff0c;不共线的三点相互连接必然构成一个三角形&#xff0c;这…

使用C语言实现简单的PNG图像读取

概述 首先&#xff0c;关于png图像的结构&#xff1a;PNG文件的结构、PNG格式的数据结构。这两篇文章说的比较细。我简单地说一下我使用到的地方&#xff1a; 注&#xff1a;①引于PNG格式的数据结构。②引于PNG文件的结构 “png文件的前8个字节为固定的文件头信息&#xff0…

RK3588平台开发系列讲解(Display篇)开机视频的设置

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、开机视频功能介绍二、使用方法2.1、开启与关闭2.2、视频放置位置2.3、编译结果2.4、视频素材要求2.5、参数控制说明沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍RK3588平台开机视频的使用方法…

NR PUCCH(一) PUCCH format 0/1

欢迎关注同名微信公众号“modem协议笔记”。 NR中PUCCH物理信道用来发送上行控制信息Uplink Control Information(UCI)&#xff0c;当然UCI也可以在PUSCH上发送。UCI 内容包括&#xff1a;CSI,HARQ ACK/NACK ,SR 及上述三者的组合信息。 那先看下PUCCH format &#xff0c;序…

NR PUSCH(三) 频域资源分配方式

微信公众号同步更新欢迎关注同名modem协议笔记 这篇看下频域资源分配&#xff0c;本篇内容主要在38.214 6.1.2.2 resource allocation in frequency domain章节中。 相比于R15&#xff0c;R16 频域资源分配有3种类型 Uplink resource allocation scheme type 0/1/2&#xff08…

NR PUSCH(四) Frequency hopping

微信公众号同步更新&#xff0c;欢迎关注同名modem协议笔记 上篇PUSCH 介绍了频域分配方式resource allocation type0/1/2&#xff0c;其中type 0 RBG位图的分配方式比较灵活&#xff0c;type 2对应的interlaced RB 本身就是一种频域的离散化&#xff0c;都可以实现类似的效果…

halcon中阈值分割算子用法

1.threshold(Image : Region : MinGray, MaxGray : )&#xff1a;通过给定的阈值区间对图像进行分割 效果图&#xff1a; read_image (Audi2, audi2) fill_interlace (Audi2, ImageFilled, odd) threshold (ImageFilled, Region, 0, 90) 2.binary_threshold(Image : Region : …

De-interlace 反交错 简介

<script type"text/javascript"> </script> <script type"text/javascript"> </script> 为了更好的理解新的逐行扫瞄的概念&#xff0c;必须先弄清楚电视传输的一些基本知识&#xff0c;一副图像是如何传输的&#xff0c;它与新的…

pygame加载png出现known incorrect sRGB,Interlace handling should be turned on when using png_read_image问题

使用pygame加载png出现libpng warning: iCCP: known incorrect sRGB profile和Interlace handling should be turned on when using png_read_image警告的问题 一、解决Interlace handling should be turned on when using png_read_image警告 最近使用Python实现强化学习走迷…

计算机视觉之旅(Day3)

对不起大家&#xff0c;opencv的坑我尽量在年底更完&#xff0c;C的坑已经基本更完了&#xff0c;在没有进一步深入学习C之前可能这个系列已经算完了。不多说&#xff0c;我看看机器视觉的基本内容吧。 &#xff08;一&#xff09;基本构成 传统的机器视觉系统是由待测目标、…

交错(拉丝)(Interlace) 与 反胶卷过带

第一部分——交错&#xff08;拉丝&#xff09;&#xff08;Interlace&#xff09;的产生 引用了相当多网友的分析与结论&#xff0c;恕我不能依次注明。分析主要来自“[SilkyBible] 视频知识系列”&#xff0c;就主要概念的主要影响因素进行了一点分析。如果有错误&#xff0c…

二分法之最大子段和

1.问题描述&#xff1a;给定一个数组&#xff0c;找出其中可以构成最大数的子段&#xff0c;子段和是由连续的子段构成的&#xff1b;给定有n个整数(可能为负整数)组成的序列a1,a2,...,an,求该序列连续的子段和的最大值。 2.设计思路&#xff1a;对于一个连续的子段和&#xf…

java动态规划求最大子段和_动态规划-最大子段和

2018-01-14 21:14:58 一、最大子段和问题 问题描述&#xff1a;给定n个整数(可能有负数)组成的序列a1&#xff0c;a2&#xff0c;...&#xff0c;an&#xff0c;求该序列的最大子段和。如果所有整数都是负数&#xff0c;那么定义其最大子段和为0。 方法一、最大子段和的简单算法…

四种方法求解最大子段和问题

题目描述 给定一段长度为n的序列&#xff0c;我们需要找到其中一个连续的子段&#xff0c;使这个子段中各个元素加和最大&#xff0c;如果这个数组中全为负整数&#xff0c;我们就定义这个子段和为0. 题目分析 首先我们的目的是找一个局部的子段但加和是全局最大&#xff0c;…

最大子段和问题(分治法和动态规划)

什么是最大子段和&#xff0c;通俗点讲&#xff1a; 最大子段和就是给了一些数&#xff0c;然后你从中找了几个连续的数&#xff0c;这组连续的数的和比任意一组连续的数的和都大&#xff0c;那么你找的这几个连续的数的和就是这些数的最大子段和。 通俗的听不懂你就看这里&am…

最大子段求和

3种算法&#xff1a;最大子段求和 一、问题分析 问题&#xff1a;给定有n个整数(可能为负整数)组成的序列 a 1 , a 2 , . . . , a n , a_1,a_2,...,a_n, a1​,a2​,...,an​,求该序列连续的子段和的最大值。 如果该子段的所有元素和是负整数时定义其最大子段和为0。 简易算法…

最大子段和问题(3种方法)

给定由n个整数(可能为负整数)组成的序列a1&#xff0c;a2&#xff0c; a3… &#xff0c; an&#xff0c; 寻找它的某个连续子段&#xff0c;使得其和最大。例如( -2,11,-4,13,-5,-2 )最大子段是{ 11,-4,13 }其和为20。 1、最大字段和问题的简单算法 (1)枚举法求解&#xff1…