[计算几何] (二维)圆与直线的交点

给出圆心O的坐标, 和半径r, 再给出点A,B的坐标构成直线AB, 求出圆与直线AB交点的坐标如下图Step1: 首先求出圆心c在直线l 上的投影点pr的坐标可通过求解向量p1pr(p1pr的长度 * p1p2的单位向量)Step2: 计算向量p1p2的单位向量e, 再勾股定理求出base的长度, 进而求出向量baseStep3: 最后,以pr作为起点, 向正or负...
摘要由CSDN通过智能技术生成

给出圆心O的坐标, 和半径r, 再给出点A,B的坐标构成直线AB, 求出圆与直线AB交点的坐标

 

如下图

 Step1: 首先求出圆心c在直线l 上的投影点pr的坐标

可通过求解向量p1pr(p1pr的长度 * p1p2的单位向量)

Step2: 计算向量p1p2的单位向量e, 再勾股定理求出base的长度, 进而求出向量base

Step3: 最后,以pr作为起点, 向正or负方向加上该向量, 就可以得到圆与直线的交点了

程序代码参考

#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
typedef struct node
{
	double x, y;
}NODE;
inline NODE Vector(NODE A, NODE B);  //向量AB
double cross(NODE A, NODE B, NODE P);
inline double dis2(NODE a, NODE b);
double disLine(NODE A, NODE B, NODE P);
double dot(NODE A, NODE B, NODE P);
NODE prxy(NODE A, NODE B, NODE O);
NODE Vbase(NODE A, NODE B, NODE O, double r);
int main()
{
	NODE A, B, O;
	double r;
	cin >> O.x >> O.y>>r;
	cin >> A.x >> A.y >&g
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值