安卓平滑曲线的实现:三次贝塞尔曲线

本文介绍了在安卓开发中如何使用三次贝塞尔曲线来实现平滑曲线的效果。通过计算坐标,设置斜率k和常数b,确定控制点的位置,调整rate值来控制曲线弧度。在实际应用中,当rate值在0到0.5之间变化时,可以调整数值点间的曲线形状。对于边界点,斜率k可视为0,简化计算。并附带了实现效果的展示。
摘要由CSDN通过智能技术生成

参考链接
https://www.jianshu.com/p/c4601bab860a

理论知识:
坐标计算

A0和B3连线的斜率 k = (B3Y - A0Y) / (B3X - A0X)
常数 b = A3Y - k * A3X

A2的X坐标 A2X = A3X - (A3X - A0X) * rate
A2的Y坐标 A2Y = k * A2X + b
B1的X坐标 B1X = A3X + (B3X - A3X) * rate
B1的Y坐标 B1Y = k * B1X + b

rate是一个(0, 0.5)区间内的值,数值越大,数值点之间的曲线弧度越小。
除此以外,如果数值点是第一个点或者最后一个点,可以把斜率k视为0,然后只计算左控制点或者有控制点。
在这里插入图片描述

package com.aiyuba.uiview;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PointF;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.util.Log;
im
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值