Skip to content
项目

venshine/BezierMaker has 1,410 GitHub stars and 246 forks. GitHot measured 0 stars in 24 hours and 0 in 7 days. Last checked 2026-11-11 20:47 UTC. Last push 2026-10-30.

这些数字如何统计

🔥 Draws and animates Bézier curves of order 1-7 with the de Casteljau algorithm | 贝塞尔曲线绘制与形成动画

可以做什么

  • Add and remove control points
  • Bézier curves of order 1 to 7 (limited by screen size; order N is supported in theory)
  • Drag control points freely
  • Show the tangents while the curve is being formed

实测星标增长

24小时
0
7天
0
15天
正在收集历史
1个月
正在收集历史

各周期内的星标净变化,周期相互重叠,并非每日新增。缺失的测量保持空白。星标代表关注度,不代表软件质量。

README-CN.md

原文

BezierMaker

English | 简体中文

JitPack CI API

通过de Casteljau算法绘制贝塞尔曲线,并计算它的切线,实现1-7阶贝塞尔曲线的形成动画。 德卡斯特里奥算法可以计算出Bezier曲线上的一个点,进而绘制出Bezier曲线。想深入了解德卡斯特里奥算法的同学可以参考我翻译的一篇文章《德卡斯特里奥算法——找到Bezier曲线上的一个点》。

下载示例 APK

Features

  • 支持增加和删除控制点
  • 支持1阶到7阶贝塞尔曲线,限于屏幕大小,理论上可以支持N阶贝塞尔曲线
  • 支持自由移动控制点
  • 支持显示贝塞尔曲线形成过程的切线
  • 支持循环显示贝塞尔曲线的形成动画
  • 支持贝塞尔曲线显示速率
  • 支持显示控制点坐标
  • 支持设置贝塞尔曲线阶数

ScreenShot




Usage

Gradle:
  1. 在 settings.gradle 中添加 JitPack 仓库:
dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()
        maven { url = 'https://jitpack.io' }
    }
}
  1. 在模块的 build.gradle 中添加依赖:
implementation 'com.github.venshine:BezierMaker:2.0.1'
Gradle Kotlin DSL:
// settings.gradle.kts
dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()
        maven("https://jitpack.io")
    }
}

// build.gradle.kts
implementation("com.github.venshine:BezierMaker:2.0.1")

Demo

库本身用 Java 编写,Java 和 Kotlin 都可以直接调用,不会给项目额外引入 Kotlin 依赖。

XML:
<com.wx.beziermaker.BezierView
    android:id="@+id/bezier"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
Kotlin:
class MainActivity : AppCompatActivity() {
    private lateinit var bezierView: BezierView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        bezierView = findViewById(R.id.bezier)
        bezierView.setRate(10) // 移动速率
        bezierView.setTangent(true) // 显示切线
        bezierView.setLoop(true) // 循环播放
    }

    fun start(view: View) = bezierView.start()

    fun stop(view: View) = bezierView.stop()

    fun add(view: View) {
        bezierView.addPoint() // 增加控制点,返回 false 表示已达上限
    }

    fun del(view: View) {
        bezierView.delPoint()
    }
}
Java:
public class MainActivity extends Activity {

    BezierView mBezierView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mBezierView = findViewById(R.id.bezier);
    }

    public void start(View view) {
        mBezierView.start();
    }

    public void stop(View view) {
        mBezierView.stop();
    }

    public void add(View view) {
        mBezierView.addPoint();
    }

    public void del(View view) {
        mBezierView.delPoint();
    }

}
Methods:

| method 方法 | description 描述 | |:--- |:---| | void start() | 开始贝塞尔曲线(required) | | void stop() | 停止贝塞尔曲线(optional) | | boolean addPoint() | 增加控制点(optional) | | boolean delPoint() | 删除控制点(optional) | | int getOrder() | 获取贝塞尔曲线阶数(optional) | | void setRate(int rate) | 设置移动速率(optional) | | void setTangent(boolean tangent) | 设置是否显示切线(optional) | | void setLoop(boolean loop) | 设置是否循环(optional) | | void setOrder(int order) | 设置贝塞尔曲线阶数(optional) |

About

License

Copyright (C) 2016 [email protected]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

探索相关项目