資源簡(jiǎn)介
本項(xiàng)目為vs2013工程項(xiàng)目,貝塞爾曲線計(jì)算,控制點(diǎn)可以多個(gè),支持二維數(shù)據(jù),三維數(shù)據(jù),使用c++語(yǔ)言編寫,直接打開(kāi)即可運(yùn)行。

代碼片段和文件信息
#include?“BezierCurve.h“
namespace?CBezierCurve{
//?function?to?calculate?the?factorial
float?Factrl(int?n)
{
static?int?ntop?=?6;
static?float?a[33]?=?{?1.0?1.0?2.0?6.0?24.0?120.0?720.0?};?/*?fill?in?the?first?few?values?*/
int?j1;
if?(n?0)?printf(“\nNegative?factorial?in?routine?FACTRL\n“);
if?(n?>?32)?printf(“\nFactorial?value?too?large?in?routine?FACTRL\n“);
while?(ntop? j1?=?ntop++;
a[n]?=?a[j1]?*?ntop;
}
return?a[n];?/*?returns?the?value?n!?as?a?floating?point?number?*/
}
//?function?to?calculate?the?factorial?function?for?Bernstein?basis
float?Ni(int?n?int?i)
{
float?ni;
ni?=?Factrl(n)?/?(Factrl(i)*Factrl(n?-?i));
return?ni;
}
//?function?to?calculate?the?Bernstein?basis
float?Basis(int?n?int?i?float?t)
{
float?basis;
float?ti;?/*?this?is?t^i?*/
float?tni;?/*?this?is?(1?-?t)^i?*/
/*?handle?the?special?cases?to?avoid?domain?problem?with?pow?*/
if?(t?==?0.?&&?i?==?0)
ti?=?1.0;
else
ti?=?pow(t?i);
if?(n?==?i?&&?t?==?1.)
tni?=?1.0;
else
tni?=?pow((1?-?t)?(n?-?i));
basis?=?Ni(n?i)*ti*tni;?/*?calculate?Bernstein?basis?function?*/
return?basis;
}
//?Bezier?curve?subroutine
int?Bezier(SPoint?*sPoint?int?inPointNum?SPoint?*sOutPoint?int?outPointNum)
{
float?step;
float?t;
/*????calculate?the?points?on?the?Bezier?curve?*/
t?=?0;
step?=?1.0f?/?((float)(outPointNum?-?1));
for?(int?i1?=?0;?i1? {
if?((1.0?-?t)?5e-6)
{
t?=?1.0;
}
sOutPoint[i1].x?=?0.0;
sOutPoint[i1].y?=?0.0;
sOutPoint[i1].z?=?0.0;
for?(int?posi?=?0;?posi? {
sOutPoint[i1].x?=?sOutPoint[i1].x?+?Basis(inPointNum?-?1?posi?t)*sPoint[posi].x;
sOutPoint[i1].y?=?sOutPoint[i1].y?+?Basis(inPointNum?-?1?posi?t)*sPoint[posi].y;
sOutPoint[i1].z?=?sOutPoint[i1].z?+?Basis(inPointNum?-?1?posi?t)*sPoint[posi].z;
}
t?=?t?+?step;
}
return?0;
}
};
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????2121??2017-04-29?14:15??BezierCurve\BezierCurve\BezierCurve.cpp
?????文件???????1413??2017-04-29?14:15??BezierCurve\BezierCurve\BezierCurve.h
?????文件???????4207??2017-04-29?14:13??BezierCurve\BezierCurve\BezierCurve.vcxproj
?????文件???????1164??2017-04-29?14:13??BezierCurve\BezierCurve\BezierCurve.vcxproj.filters
?????文件???????1124??2017-05-02?08:45??BezierCurve\BezierCurve\main.cpp
?????文件????2097152??2018-05-18?16:10??BezierCurve\BezierCurve.sdf
?????文件????????979??2017-04-28?22:59??BezierCurve\BezierCurve.sln
????..A..H.?????25088??2018-05-18?16:10??BezierCurve\BezierCurve.v12.suo
?????目錄??????????0??2017-11-07?10:58??BezierCurve\BezierCurve
?????目錄??????????0??2018-05-18?16:10??BezierCurve
-----------?---------??----------?-----??----
??????????????2133248????????????????????10
評(píng)論
共有 條評(píng)論