#curve #3d #graphics #game #path

fastcurve_3d

3D和2D快速曲线生成库

2个版本

0.1.1 2020年5月24日
0.1.0 2020年5月14日

#117机器人

Download history 242/week @ 2024-03-14 276/week @ 2024-03-21 258/week @ 2024-03-28 459/week @ 2024-04-04 423/week @ 2024-04-11 256/week @ 2024-04-18 177/week @ 2024-04-25 268/week @ 2024-05-02 212/week @ 2024-05-09 446/week @ 2024-05-16 288/week @ 2024-05-23 177/week @ 2024-05-30 320/week @ 2024-06-06 205/week @ 2024-06-13 175/week @ 2024-06-20 127/week @ 2024-06-27

863 每月下载量

自定义许可

33KB
114

Rust Fast Curve 3d

crates.io Rust License codecov

该算法从控制点列表生成曲线。

参考

原始论文:G. M. Chaikin, “高速曲线生成算法,计算机图形与图像处理,” 第3卷,1974年,第346-349页 关于Chaikin算法的R.F.Riesenfeld

该库包含以下函数

  • fast_curve_2d 用于在2D中生成曲线。
  • fast_curve_3d 用于在3D中生成曲线。

示例

示例使用 rust gnuplot 库。

3D曲线生成

    let x = vec![1.0,1.0,4.0,5.0,2.0];
    let y = vec![1.0,2.0,0.5,1.0,2.0];
    let z = vec![1.0,2.0,0.8,1.0,1.5];
    let n: u8 = 4;

    let (xn,yn,zn) = fast_curve_3d(&x, &y, &z, n);

    // gnu plot Figure
    let mut fg = Figure::new();
    fg.axes3d()
    .lines(&x, &y, &z,&[Caption("Original"), Color("blue")])
    .lines(&xn, &yn, &zn, &[Caption("Smoothed"), Color("red")]);
    fg.set_scale(1.0, 1.0);
    fg.show().unwrap();

alt text

2D曲线生成

    let x = vec![1.0,1.0,4.0,5.0,2.0];
    let y = vec![1.0,2.0,0.5,1.0,2.0];
    let n: u8 = 4;

     let (xn,yn) = fast_curve_2d(&x, &y, n);


    let mut fg = Figure::new();
    fg.axes2d()
    .lines(&x, &y,&[Caption("Original"), Color("blue")])
    .lines(&xn, &yn, &[Caption("Smoothed"), Color("red")]);
    
    fg.set_scale(1.0, 1.0);
    fg.show().unwrap();

alt text

无运行时依赖