求直线和圆相交坐标

直线方程 y=kx+b;
圆标准方程 (x-a)2+(y-b)2=r2

public class PointV
{
      public double x { get; set; }
      public double y { get; set; }
}

 /// <summary>
/// 计算与圆相交坐标
/// </summary>
/// <param name="Aux1">参考点1</param>
/// <param name="Aux2">参考点1</param>
/// <param name="r">半径</param>
/// <param name="center">圆心</param>
/// <returns></returns>
void GetCirPoint(PointV Aux1, PointV Aux2, double r, PointV center, PointV points[2])
{
	//直线斜率不存在,线段垂直于X轴
	if ((Aux1.x == Aux2.x) && (Aux1.y != Aux2.y))
	{
		if (fabs(center.x - Aux1.x) < r)
		{
			double y = sqrt(r * r - ((Aux1.x - center.x) * (Aux1.x - center.x)));
			points[0].x = Aux1.x;
			points[0].y = center.y + y;
			points[1].x = Aux1.x;
			points[1].y = center.y - y;
		}
	}
	//两点重合
	else if ((Aux1.y
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值