資源簡介
之前實現了不通過控制點生成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? if?(i?==?0?||?i?==?(CtrlPtsNum?-?1))?{
double?test?=?(_my[i?+?1]?-?_my[i])?/?(_mx[i?+?1]?-?_mx[i]);
// std::cout?<
m_c_k.push_back(test);
}
else?if?(i?
double?test?=?((_my[i]?-?_my[i?-?1])?/?(_mx[i]?-?_mx[i?-?1]))?+?((_my[i?+?1]?-?_my[i])?/?(_mx[i?+?1]?-?_mx[i]));
// std::cout?<
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? double?min_angle?=?10.0;
for?(int?j?=?0;?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?“?< 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?<x?<““?<y?< }
}
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?~?“?< system(“pause“);
return?false;
}
for?(int?i?=?0;?i? // std::cout?<“i?=?“?< // std::cout?< 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\li
?????文件??????11096??2017-08-10?15:44??Spline_class\Spline_class\Debug\Spline_class.tlog\li
?????文件????????736??2017-08-10?15:44??Spline_class\Spline_class\Debug\Spline_class.tlog\li
?????文件????????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個文件信息
評論
共有 條評論