這裏是我如何做到這一點
- 使曲線
一個。創建曲線對象(維,理性標誌(它具有權重),曲線+1度,多少控制點你有)
ON_NurbsCurve thisCurve(3, false, order, controlPoints.size());
灣添加控制點到曲線
for(int i = 0; i <controlPoints.size(); ++i)
{
ON_3dPoint cpPosition = controlPoints[i];
thisCurve.SetCV(i, cpPosition.x);
}
c。添加結
一,如果你有knot_count = cv_count +學歷+ 1
for (int i = 1; i < knotValues.size() - 1; ++i)
thisCurve.SetKnot(i - 1, knotValues[i]);
II。如果你有knot_count = cv_count +度 - 1
for (int i = 0; i < knotValues.size(); ++i)
thisCurve.SetKnot(i, knotValues[i]);
- 樣品的曲線
一個。檢查曲線是否有效
if (thisCurve.IsValid())
{
b。得到曲線的參數範圍
double maxU = knotValues.back();
double minU = knotValues.front();
c。插入
double quadrature = 10;
for (unsigned int i = 0; i < quadrature; ++i)
{
double t = ((maxU - minU) * (i)/(quadrature - 1)) + minU;
double pointsOut[3];
d。評估這需要(參數的曲線,採取多少衍生物,什麼尺寸,存儲值的雙陣列)
bool successful = thisCurve.Evaluate(t, 0, 3, pointsOut);
if (successful)
curvePoints.push_back(ON_3dPoint(pointsOut[0], pointsOut[1], pointsOut[2]));
else
std::cout << "evaluation not successful " << std::endl;
e。清理
delete [] pointsOut;
}
thisCurve.Destroy();
我會試試這個並報告回來。我已經下載了幾次,但我沒有完整閱讀這些例子。 – 2012-08-07 13:37:29
不,那件事情是不可能編譯的,每次我嘗試編譯時都會遇到數千個錯誤,它已經過時了,無法修復。 – 2012-08-08 06:38:47
也許你做錯了什麼。你有什麼樣的錯誤? – Tutankhamen 2012-08-08 08:18:40