资源简介

之前实现了不通过控制点生成Bezier曲线.. 本次实现了通过控制点生成曲线..(C/C++版本)..

资源截图

代码片段和文件信息


#include “func.h“

int recursive_mkdir(char* dir) {

//分解路径名E:\\AA\\BB\\CC\\

std::string str = dir;
std::string::size_type index = 0; // int 
int i = 0;
while (1)
{
std::string::size_type pos = str.find(“\\“ index);
std::string str1;
str1 = str.substr(0 pos);
if (pos != -1 && i > 0)
{
if (_access(str1.c_str() 0) == -1)
{
_mkdir(str1.c_str());
}
}
if (pos == -1)
{
break;
}
i++;
index = pos + 1;
}
return 0;
}

bool getMptsNormal(double* _mx double* _my std::vector &_m_n) {
// 模型控制点斜率
std::vector m_c_k;
for (int i = 0; i < CtrlPtsNum; i++) {
if (i == 0 || i == (CtrlPtsNum - 1)) {

double test = (_my[i + 1] - _my[i]) / (_mx[i + 1] - _mx[i]);

// std::cout << test << std::endl;;

m_c_k.push_back(test);
}
else if (i < CtrlPtsNum - 1) {

double test = ((_my[i] - _my[i - 1]) / (_mx[i] - _mx[i - 1])) + ((_my[i + 1] - _my[i]) / (_mx[i + 1] - _mx[i]));

// std::cout << test / 2 << std::endl;

m_c_k.push_back(test / 2);
}
}

for (std::vector ::iterator it = m_c_k.begin(); it != m_c_k.end(); it++) {
_m_n.push_back(1 / *it * (-1));
}

return true;
}

void getThePts(double* _mx double* _my std::vector &_m_n double * _p_outX double * _p_outY std::vector &_line_pts) {

// 模型控制点斜率
double line_k = 0.0;
double angle = 0.0;
PT tempPT;

for (int i = 0; i < CtrlPtsNum; i++) {
double min_angle = 10.0;
for (int j = 0; j < LINEPTSNUM; j++) {
if (i == 0) {
tempPT.x = _p_outX[j];
tempPT.y = _p_outY[j];
break;
}
else if (i == (CtrlPtsNum - 1)) {
tempPT.x = _p_outX[LINEPTSNUM - 1];
tempPT.y = _p_outY[LINEPTSNUM - 1];
break;
}
else {
line_k = (_p_outY[j] - _my[i]) / (_p_outX[j] - _mx[i]);
if (line_k == _m_n[i]) {
tempPT.x = _p_outX[j];
tempPT.y = _p_outY[j];
break;
}
else if ((line_k * _m_n[i]) == -1) {
continue;
}

angle = atan((line_k - _m_n[i]) / (1 + line_k * _m_n[i])) * PI / 180; // 转化为弧度

if (angle <= 0) {
// std::cout << “ <0 “ << std::endl;
angle = angle * (-1);
}

if (angle <= min_angle) {
min_angle = angle;
tempPT.x = _p_outX[j];
tempPT.y = _p_outY[j];
}
}
}
_line_pts.push_back(tempPT);
}
for (std::vector ::iterator it = _line_pts.begin(); it != _line_pts.end(); it++) {
std::cout << it->x << ““ << it->y << std::endl;
}
}

bool SavePTs(std::string &_path double* _p_outX double * _p_outY std::vector &_line_pts) {


std::ofstream writeinfile(_path std::ofstream::out);
if (!writeinfile.is_open()) {
std::cout << “ ofstream writeinfile is falseD ~ “ << std::endl;
system(“pause“);
return false;
}

for (int i = 0; i < LINEPTSNUM; i++) {
// std::cout << “i = “ << i << “ : “;
// std::cout << p_outX[i] << ““ << p_outY[i] << std::endl; 
writ

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    ..A..H.     46592  2017-10-30 11:39  Spline_class\.vs\Spline_class\v14\.suo

     文件     105984  2017-08-10 15:44  Spline_class\Debug\Spline_class.exe

     文件     607036  2017-08-10 15:44  Spline_class\Debug\Spline_class.ilk

     文件     978944  2017-08-10 15:44  Spline_class\Debug\Spline_class.pdb

     文件     245418  2017-08-10 15:44  Spline_class\Spline_class\Debug\main.obj

     文件      42628  2017-08-10 15:44  Spline_class\Spline_class\Debug\Spline.obj

     文件        256  2017-08-10 15:44  Spline_class\Spline_class\Debug\Spline_class.log

     文件       1422  2017-08-10 15:44  Spline_class\Spline_class\Debug\Spline_class.tlog\CL.command.1.tlog

     文件      31034  2017-08-10 15:44  Spline_class\Spline_class\Debug\Spline_class.tlog\CL.read.1.tlog

     文件       1498  2017-08-10 15:44  Spline_class\Spline_class\Debug\Spline_class.tlog\CL.write.1.tlog

     文件       3280  2017-08-10 15:44  Spline_class\Spline_class\Debug\Spline_class.tlog\link.command.1.tlog

     文件      11096  2017-08-10 15:44  Spline_class\Spline_class\Debug\Spline_class.tlog\link.read.1.tlog

     文件        736  2017-08-10 15:44  Spline_class\Spline_class\Debug\Spline_class.tlog\link.write.1.tlog

     文件        213  2017-08-10 15:44  Spline_class\Spline_class\Debug\Spline_class.tlog\Spline_class.lastbuildstate

     文件     445440  2017-08-10 15:44  Spline_class\Spline_class\Debug\vc140.idb

     文件     364544  2017-08-10 15:44  Spline_class\Spline_class\Debug\vc140.pdb

     文件       3581  2017-10-30 11:25  Spline_class\Spline_class\func.cpp

     文件        814  2017-10-30 11:19  Spline_class\Spline_class\func.h

     文件       1273  2017-10-30 11:39  Spline_class\Spline_class\main.cpp

     文件      38457  2017-10-30 11:34  Spline_class\Spline_class\result\PTs.txt

     文件       4878  2017-10-30 11:34  Spline_class\Spline_class\Spline.cpp

     文件       2687  2017-08-10 15:57  Spline_class\Spline_class\Spline.h

     文件       7433  2017-10-30 11:19  Spline_class\Spline_class\Spline_class.vcxproj

     文件       1351  2017-10-30 11:19  Spline_class\Spline_class\Spline_class.vcxproj.filters

     文件       1519  2017-10-30 11:39  Spline_class\Spline_class\x64\Debug\Spline_class.Build.CppClean.log

     文件          3  2017-10-30 11:39  Spline_class\Spline_class\x64\Debug\Spline_class.log

     文件       1318  2017-08-10 10:29  Spline_class\Spline_class.sln

     文件    8855552  2017-10-30 11:39  Spline_class\Spline_class.VC.db

     目录          0  2017-10-30 11:39  Spline_class\Spline_class\x64\Debug\Spline_class.tlog

     目录          0  2017-10-30 11:39  Spline_class\.vs\Spline_class\v14

............此处省略15个文件信息

评论

共有 条评论