资源简介
通过多个三维控制点 实现生成Bezier样条曲线 并通过输入值(按照百分比 输入0-100即可) 得到曲线上的三维坐标。
代码片段和文件信息
/*
20171130 通过多个三维控制点 实现生成样条曲线 并通过输入值(按照百分比 输入0-100即可) 得到曲线上的三维坐标
*/
#include
#include
#include
typedef struct
{
float x;
float y;
float z;
} POINT3D;
/*
myOutXYZ()
第一个参数为输入的KeyPoints
第二个参数为输入点的数量
第三个参数为输入要想找到的样条曲线上点的位置(0 - 100)
第四个参数为输出的点的三维坐标
第五个参数为输入生成的样条曲线由多少个点构成 缺省默认为10000个
*/
void myOutXYZ(float *_InputAllDataPointer int _NumOfKeyPoint float _Input_Proportion/*百分比*/ float * &_OutputXYZ int _NumOfLinePts = 10000);
void myOutVec(std::vector &_InputPoints int _NumOfKeyPoint float _Proportion POINT3D &_Output3DPt int _NumOfLinePts);
//贝塞尔曲线
void drawCurve(int _n float _t std::vector _InputKeyPoints POINT3D &_Pt3D int _line_pts_num);
int main() {
// 5 为 点的数量 3 为 三维
float arr[5 * 3] = { 1 1 1
2 2 2
3 1 3
0 0 4
4 4 4};
float * result = new float[3];
//
myOutXYZ(arr 5 30.0 result);
std::cout << result[0] << std::endl;
std::cout << result[1] << std::endl;
std::cout << result[2] << std::endl;
delete[] result;
result = NULL;
return 0;
}
void myOutXYZ(float *_InputAllDataPointer int _NumOfKeyPoint float _Input_Proportion float * &_OutputXYZ int _NumOfLinePts) {
std::vector InputPoints;
POINT3D tempMyPt3D;
for (int i = 0; i < _NumOfKeyPoint * 3;) {
tempMyPt3D.x = _InputAllDataPointer[i++];
tempMyPt3D.y = _InputAllDataPointer[i++];
tempMyPt3D.z = _InputAllDataPointer[i++];
InputPoints.push_back(tempMyPt3D);
}
int g_pts_nums = InputPoints.size();
POINT3D OUTPUT_3DPT;
myOutVec(InputPoints g_pts_nums _Input_Proportion OUTPUT_3DPT _NumOfLinePts);
_OutputXYZ[0] = OUTPUT_3DPT.x;
_OutputXYZ[1] = OUTPUT_3DPT.y;
_OutputXYZ[2] = OUTPUT_3DPT.z;
}
void myOutVec(std::vector &_InputPoints int _NumOfKeyPoint float _Proportion POINT3D &_Output3DPt int _NumOfLinePts)
{
if (_Proportion > 100 && _Proportion < 0) {
// 报错
return;
}
POINT3D Start_3DPt;
POINT3D End_3DPt;
float Totallylength = 0.0;
std::vector OutputLinePoints;
if (_NumOfKeyPoint >= 3) {
for (int i = 0; i < _NumOfLinePts; i++)//贝赛尔曲线上的点
相关资源
- MFC绘制Bezier曲线B样条曲线曲线拟合
- Spline曲线(穿过控制点CC++版本)
- Coons曲面与hermite、bezier、B样条曲线标
- 图形学各种曲线--Bezier曲线,B-样条曲
- Bezier曲线曲面算法实现代码
- MFC绘制Bezier,B样条,NURBS曲线曲面以
- Hermite,Bezier,三次B样条曲线的MFC实现
- 计算机图形学(MFC)-Bezier曲面
- B样条曲线绘制、bezier曲线绘制c语言实
- 编写 1 个程序绘制这些控制点生成的
- Bezier曲线算法
- 基于qt5.8写的一个贝塞尔曲线非转存
- opengl动态显示贝塞尔曲线
- 曲线绘制Bezier、三次B样条、Hermite
- MFC下Bezier曲线的绘制
- Bezier曲线MFC实现源代码
- BezierCurve 贝塞尔曲线计算 c++源码
- de Casteljau算法绘制Bezier曲线
- opengl实现双三次Bezier曲面
- 四次Bezier曲线动态生成 VC++代码实现
- Bezier曲线,三次B样条曲线
- MFC bezier曲线
- 基于OpenGl的Bezier曲面的简洁实现
- 绘制bezier曲线
- 在MFC单文档中绘制平面bezier曲线、三
评论
共有 条评论