B样条曲线
来源:互联网 发布:java多线程视频教程 编辑:程序博客网 时间:2024/05/16 08:40
- 参考文献
- B样条曲线
- 二次B样条曲线
- 代码实现
参考文献
B样条曲线
二次B样条曲线代码
B样条曲线
给定
二次B样条曲线
取
二次B样条曲线段
端点位置:
代码实现
#include <stdio.h>#include <opencv2\opencv.hpp>#include <time.h>using namespace cv;void generatePointArray(int * x, int * y, int size, int minX, int maxX, int minY, int maxY) { srand((unsigned int) time(0)); int bandX = maxX - minX; int bandY = maxY - minY; int i; for (i = 0; i < size; i++) { x[i] = rand() % bandX + minX; y[i] = rand() % bandY + minY; }}void drawPointWithLine(Mat & board, int * x, int * y, int size){ if (size < 1) return; circle(board, Point(x[0], y[0]), 2, Scalar(255, 0, 0), 1, CV_AA); int i; for (i = 1; i < size; i++) { line(board, Point(x[i-1], y[i-1]), Point(x[i], y[i]), Scalar(0, 255, 0), 1, CV_AA); circle(board, Point(x[i], y[i]), 2, Scalar(255, 0, 0), 1, CV_AA); }}void BSpline(Mat & board, int * x, int * y, int size) { if (size != 3) return; double t, delta = 1/100.0; int px = 0, py = 0; for (t = 0; t <= 1.0; t += delta) { /*** core code ***/ double g0 = 0.5*(t - 1)*(t - 1); double g1 = 0.5*(-2*t*t + 2*t + 1); double g2 = 0.5*t*t; int _x = (int) (x[0]*g0 + x[1]*g1 + x[2]*g2); int _y = (int) (y[0]*g0 + y[1]*g1 + y[2]*g2); /*****************/ if (t == 0) circle(board, Point(_x, _y), 2, Scalar(0, 0, 255), 1, CV_AA); else line(board, Point(px, py), Point(_x, _y), Scalar(0, 128, 255), 1, CV_AA); px = _x; py = _y; } if (t != 1.0) circle(board, Point((x[1] + x[2]) / 2, (y[1] + y[2]) / 2), 2, Scalar(0, 0, 255), 1, CV_AA);}int main(int argc, char* argv[]){ int boardWidth = 400, boardHeight = 300; Mat board = Mat(boardHeight, boardWidth, CV_8UC3); memset(board.data, 255, boardHeight*boardWidth*3); int x[5], y[5]; generatePointArray(x, y, 5, 0, boardWidth, 0, boardHeight); drawPointWithLine(board, x, y, 5); int i; for (i = 0; i < 3; i++) BSpline(board, x+i, y+i, 3); imshow("B-Spline", board); waitKey(0); return 0;}
结果1:
结果2:
0 0
- B样条曲线
- B样条曲线
- B样条曲线
- B样条曲线
- B样条曲线
- B样条曲线
- B样条曲线
- B-样条曲线:开曲线
- B-样条曲线:闭曲线
- 曲线平滑-B样条曲线
- B-样条曲线:定义
- B-样条曲线:特例
- 绘制B样条曲线
- [图形学] B样条曲线
- [图形学] B样条曲线
- B-样条曲线:重要性质
- B-样条曲线:系数计算
- B-样条曲线:移动控制点
- android保存到手机内存【数据存储】
- sufaceview
- FFMPEG中sws_scale()函数的作用
- 华为OJ:合唱队
- multiprocessing.Pipe()的用法
- B样条曲线
- C#-求两个数的公约数
- SqlServer创建加密视
- gpssh-exkeys ganglia perf stat【gp管理集群文件】
- 【iOS地图开发】巧妙打造中英文全球地图
- 解决Cursor泄漏方案
- 15 个实用的 PHP 正则表达式
- 文章标题
- 26. Processes (进程)