Я использовал NURBS-python и обнаружил интересную проблему, и не уверен, что это сделано намеренно или это просто ошибка. Я хотел бы представить это с 2 кодами.
Первый должен выводить то же самое, что и второй, а это не так. Первый успешно обновил контрольные точки кривой NURBS и нарисовал новую кривую,
Способ изменения списка контрольных точек влияет на результаты.
import math
from geomdl import BSpline
from geomdl import NURBS
from geomdl import fitting
from geomdl import convert
from geomdl.visualization import VisMPL
P1=[[0, 0], [0, 1], [1, 1], [1, 0], [1, -1], [0, -1], [0, 0]]
Degree=3
CPN=5
P2=[[0, 0], [0, 1], [2, 1], [2, 0], [2, -1], [0, -1], [0, 0]]
CP=[[0, 0], [1, 2], [2, 0], [1, -2], [0, 0]]
c1=NURBS.Curve()
c1.degree=Degree
c1.ctrlpts=P1
c1.weights=[1, 1, 1, 1, 1, 1, 1]
c1.knotvector=[0, 0, 0, 0, 0.25, 0.5, 0.75, 1, 1, 1, 1]
c1.vis=VisMPL.VisCurve2D()
c1.render()
c1.ctrlpts=P2
c1.vis=VisMPL.VisCurve2D()
c1.render()
c2=convert.bspline_to_nurbs(fitting.approximate_curve(P1, Degree, ctrlpts_size=CPN))
c2.vis=VisMPL.VisCurve2D()
c2.render()
c2.ctrlpts=CP
c2.vis=VisMPL.VisCurve2D()
c2.render()
в то время как второй просто обновляет контрольные точки, сама кривая вообще не изменилась.
import math
from geomdl import BSpline
from geomdl import NURBS
from geomdl import fitting
from geomdl import convert
from geomdl.visualization import VisMPL
P1=[[0, 0], [0, 1], [1, 1], [1, 0], [1, -1], [0, -1], [0, 0]]
Degree=3
CPN=5
P2=[[0, 0], [0, 1], [2, 1], [2, 0], [2, -1], [0, -1], [0, 0]]
CP=[[0, 0], [1, 2], [2, 0], [1, -2], [0, 0]]
c1=NURBS.Curve()
c1.degree=Degree
c1.ctrlpts=P1
c1.weights=[1, 1, 1, 1, 1, 1, 1]
c1.knotvector=[0, 0, 0, 0, 0.25, 0.5, 0.75, 1, 1, 1, 1]
c1.vis=VisMPL.VisCurve2D()
c1.render()
for i in range(len(P2)):
c1.ctrlpts[i]=P2[i]
c1.vis=VisMPL.VisCurve2D()
c1.render()
c2=convert.bspline_to_nurbs(fitting.approximate_curve(P1, Degree, ctrlpts_size=CPN))
c2.vis=VisMPL.VisCurve2D()
c2.render()
for i in range(len(CP)):
c2.ctrlpts[i]=CP[i]
c2.vis=VisMPL.VisCurve2D()
c2.render()
Пожалуйста, помогите, спасибо.