两圆的外切线与内切线的切点算法

最近想画两球水滴效果所有在网上找两圆外切点和内切点的算法,找了很久没有找到所以自己写了一个工具类来计算两圆的公切线点。具体效果如下图:

根据CircleUtils类的getCircleTangentPointOut方法返回外切点坐标[r1p1, r1p2, r2p1, r2p2],依次为左边圆的两个切点坐标和右边两个切点坐标。

根据CircleUtils类的getCircleTangentPointIn方法返回外切点坐标[r1p1, r1p2, r2p1, r2p2],依次为左边圆的两个切点坐标和右边两个切点坐标。

根据获取坐标绘制线段和点,如下代码


        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            mPaint.setColor(0XFF00FF00);
            mPaint.setStyle(Paint.Style.FILL);
            float r1 = 300;
            float r2 = 200;
            canvas.drawCircle(mDownX, mDownY, r1, mPaint);
            canvas.drawCircle(mCurrentX, mCurrentY, r2, mPaint);
            PointF[] points2 = CircleUtils.getCircleTangentPointOut(new PointF(mDownX, mDownY), r1, new PointF(mCurrentX, mCurrentY), r2);
            if (points2 != null) {
                mPaint.setColor(0XFF0000FF);
                mPaint.setStyle(Paint.Style.STROKE);
                canvas.drawLine(points2[0].x, points2[0].y, points2[2].x, points2[2].y, mPaint);
                canvas.drawLine(points2[1].x, points2[1].y, points2[3].x, points2[3].y, mPaint);
            }
            PointF[] 
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值