三角形外接圆圆心公式

设abc是边长,S是面积。

因为三角形正弦定理,a/sin(A)=b/sin(B)=c/sin(C)=2r。

而又有面积公式S=absin(C)/2,所以sin(C)=2S/(ab),所以r=c/(2sin(C))=c/(4S/ab)=abc/(4S)。

三角形面积S是有解析几何现成公式可算的(就是一个行列式的形式),

abc的话就是一般的欧几里德距离(三角形的三边长),所以r的表达式容易求出。

要画出三角形外接圆,我们需要知道三角形的三个顶坐标。假设三角形的三个顶分别为 A(x1, y1),B(x2, y2),C(x3, y3)。 求三角形外接圆圆心坐标和半径的公式如下: 圆心横坐标 x = ((x1^2 + y1^2)(y2 - y3) + (x2^2 + y2^2)(y3 - y1) + (x3^2 + y3^2)(y1 - y2)) / (2 * (x1 - x2) * (y2 - y3) - 2 * (x2 - x3) * (y1 - y2)) 圆心纵坐标 y = ((x1^2 + y1^2)(x3 - x2) + (x2^2 + y2^2)(x1 - x3) + (x3^2 + y3^2)(x2 - x1)) / (2 * (y1 - y2) * (x3 - x2) - 2 * (y2 - y3) * (x1 - x2)) 圆半径 r = sqrt((x - x1)^2 + (y - y1)^2) 在OpenMV中,我们可以通过使用find_circles()函数来检测出所有圆形区域,并且通过调整参数来滤除不需要的圆形。以下是用于检测三角形外接圆的示例代码: ```python import sensor, image import math # 配置摄像头 sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.skip_frames(time = 2000) sensor.set_auto_gain(False) # 需要关闭自动增益和白平衡 sensor.set_auto_whitebal(False) # 设置阈值以及其他参数 red_threshold = (0, 100, 22, 70, -39, 58) min_radius = 5 max_radius = 100 while(True): # 拍摄图片 img = sensor.snapshot() # 寻找红色三角形 blobs = img.find_blobs([red_threshold]) if blobs: for blob in blobs: # 计算三角形外接圆圆心坐标和半径 x1, y1, x2, y2 = blob.rect() x3, y3 = x1 + x2, y1 + y2 x = ((x1**2 + y1**2)*(y2 - y3) + (x2**2 + y2**2)*(y3 - y1) + (x3**2 + y3**2)*(y1 - y2)) / \ (2 * (x1 - x2) * (y2 - y3) - 2 * (x2 - x3) * (y1 - y2)) y = ((x1**2 + y1**2)*(x3 - x2) + (x2**2 + y2**2)*(x1 - x3) + (x3**2 + y3**2)*(x2 - x1)) / \ (2 * (y1 - y2) * (x3 - x2) - 2 * (y2 - y3) * (x1 - x2)) r = int(math.sqrt((x - x1)**2 + (y - y1)**2)) # 绘制圆形 img.draw_circle(int(x), int(y), r, color=(0, 255, 0), thickness=2) # 显示图像 img.show() ``` 注意,此代码仅适用于检测红色三角形外接圆。如果需要检测其他颜色或形状的三角形,需要相应地调整阈值和参数。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值