• R/O
  • SSH
  • HTTPS

ongeo: Commit


Commit MetaInfo

Revisão55 (tree)
Hora2019-10-06 16:38:27
Autormocchi_2012

Mensagem de Log

Bezier曲線群を入力する下記関数のNurbs曲線入力対応
・最短点計算
・Tightバウンディングボックス

Mudança Sumário

Diff

--- trunk/NurbsCurveBezierCache.cpp (nonexistent)
+++ trunk/NurbsCurveBezierCache.cpp (revision 55)
@@ -0,0 +1,25 @@
1+// Copyright (C) Mocchi (mocchi_2003@yahoo.co.jp)
2+// License: Boost Software License See LICENSE.txt for the full license.
3+
4+#include "ONGEO.h"
5+
6+ONGEO_NurbsCurveBezierCache::ONGEO_NurbsCurveBezierCache(const ON_NurbsCurve &nc){
7+ if (nc.SpanCount() == 0) return;
8+
9+ int order = nc.Order();
10+ prms.Append(nc.Knot(order-2));
11+
12+ for (int j = 0; j <= nc.CVCount() - order; ++j){
13+ double prm_end = nc.Knot(j+order-1);
14+ if (*prms.Last() == prm_end) continue;
15+ prms.Append(prm_end);
16+
17+ ON_BezierCurve &bc = bcs.AppendNew();
18+ nc.ConvertSpanToBezier(j, bc);
19+ }
20+}
21+
22+double ONGEO_NurbsCurveBezierCache::GetNurbsParameterFromBezierParameter(int bezier_idx, double bezier_t) const{
23+ if (bezier_idx < 0 || bezier_idx >= prms.Count() - 1) return ON_UNSET_VALUE;
24+ return ON_Interval(prms[bezier_idx], prms[bezier_idx+1]).ParameterAt(bezier_t);
25+}
Show on old repository browser