园与直线相交
园
center (a,b)
(1)(x-a)^2 + (y-b)^2 = R^2
(2)直线 y = kx +b;
(2)带入(1)得到2元1次多项式
ax^2 + bx + c = 0;
求dlt = b^2 - 4ac;
x = -b/2a +- sqrtl(dlt)
代入(2) 求y
static Pointf _CalculateCenter(Point p1, Point p2, Point p3)
{
Pointf ptCenter = {0.0};
// P1 -- P2 -- P3
//P1P2
float k1 = float(p2.y - p1.y) / float(p2.x - p1.x);
// center point of P1P2
float cx1 = ((float)p1.x + (float)p2.x) / 2;
float cy1 = ((float)p1.y + (float)p2.y) / 2;
//P1P2 perpendicular bisector
float ck1 = -1 / k1;
float cb1 = cy1 - ck1 * cx1;
//P2P3
float k2 = float(p3.y - p2.y) / float(p3.x - p2.x);
// center point of P1P2
float cx2 = ((float)p2.x + (float)p3.x) / 2;
float cy2 = ((float)p2.y + (float)p3.y) / 2;
//P2P3 perpendicular bisector
float ck2 = -1 / k2;
float cb2 = cy2 - ck2 * cx2;
ptCenter.x = (cb1 - cb2) / (ck2 - ck1);
ptCenter.y = ck1 * (cb1 - cb2) / (ck2 - ck1) + cb1;
return ptCenter;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」