Bezier curve(贝塞尔曲线)

http://en.wikipedia.org/wiki/B%C3%A9zier_curve

今天看有人画Bezier曲线,看了下wiki,感觉挺好玩,简单弄了个opengl绘制,实现了线性和二次Bezier曲线绘制

不过貌似后面的更好玩,不过没怎么看了鄙视一下自己

#if 10
#include <gl/glut.h>
#include <vector>
#include <Windows.h>


#pragma comment(lib, "glut32.lib")


#define WINDOW_WIDTH  800
#define WINDOW_HEIGHT 800
#define ORTHO_W 10.0f
#define ORTHO_H 10.0f
#define RATIO_X (ORTHO_W / WINDOW_WIDTH)
#define RATIO_Y (ORTHO_H / WINDOW_HEIGHT)




/*  point position definition  */
class Point2D {
public:
  Point2D() {
    x_ = y_ = 0.0f;
  }
  Point2D(float x, float y) {
    x_ = x;
    y_ = y;
  }
  Point2D(const Point2D &ref) {
    x_ = ref.x_;
    y_ = ref.y_;
  }


  Point2D operator +(const Point2D &ref) {
    return Point2D(x_ + ref.x_, y_+ref.y_);
  }
  Point2D operator -(const Point2D &ref) {
    return Point2D(x_ - ref.x_, y_ - ref.y_);
  }
  Point2D operator *(float scale) {
    return Point2D(x_ * scale, y_ * scale);
  }
  bool operator==(const Point2D& ref) const {
    return (x_==ref.x_ && y_==ref.y_);
  }
  bool operator!=(const Point2D& ref) const {
    return !(*this == ref);
  }
  const Point2D& operator=(const Point2D& ref) {
    x_ = ref.x_;
    y_ = ref.y_;
    return *this;
  }


  friend Point2D operator *(float scale, const Point2D &ref) {
    return Point2D(scale * ref.x_, scale * ref.y_);
  }


public:
  float x_, y_;
};


/*  Linear Bézier curves definition  */
class LinearBezier {
public:
  LinearBezier(Point2D p0, Point2D p1)
    : p0_(p0), p1_(p1), t_(0.0f
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值