B-Spline mit Kontrollpunkten und Polen

In diesem Forum Fragen und Diskussionen in Deutsch
Forum rules
Foren-Regeln und hilfreiche Informationen

WICHTIG: Bitte zuerst lesen, bevor Sie posten
chrisb
Veteran
Posts: 54177
Joined: Tue Mar 17, 2015 9:14 am

Re: B-Spline mit Kontrollpunkten/Polen in FC.17

Post by chrisb »

Das sieht schon sehr geschmeidig aus mit so einem BSpline.
A Sketcher Lecture with in-depth information is available in English, auf Deutsch, en français, en español.
User avatar
hammax
Veteran
Posts: 1991
Joined: Thu Jan 19, 2017 5:03 pm
Location: Ammersee DE

Re: B-Spline mit Kontrollpunkten und Polen

Post by hammax »

… ich hole diesen Thread wieder nach oben,
insbesondere weil looo gerade eine WB auflegt, die mit Aero-Profilen auf BSpline-Basis arbeitet.
https://forum.freecadweb.org/viewtopic. ... 05#p353264
Das regt wiederum mein CAD-Hirn an, dieser Sache aufmerksam zu folgen.
Aktuell versuche ich auch immer wieder vorgegebene Dat-Profile mit Sketcher-BSpline "nachzuzeichnen".
Bislang hat mich dabei gestört, dass bei mehr als 4 Kontrollpunkten im Profil diese "Knotenpunkte" auftauchen.
Inzwischen habe ich fast schon durch Zufall eine Methode gefunden, die mir knotenpunktfreie Profile liefert.
https://forum.freecadweb.org/viewtopic. ... 71#p352993
https://forum.freecadweb.org/viewtopic. ... 10#p353004
Warum das so funktioniert und mit welchem Algorithmen-Hintergrund das plötzlich geht, verschließt sich mir noch.
Jedenfalls lassen sich aus dem vorgestellten Profil allerlei andere Profilkonstruktionen recht einfach ableiten.

NormProf_2.PNG
NormProf_2.PNG (113.95 KiB) Viewed 1119 times
Attachments
BSpline_6_Norm.FCStd
(16.31 KiB) Downloaded 31 times
User avatar
microelly2
Veteran
Posts: 4688
Joined: Tue Nov 12, 2013 4:06 pm
Contact:

Re: B-Spline mit Kontrollpunkten und Polen

Post by microelly2 »

hammax wrote: Wed Dec 11, 2019 4:43 pm
Bislang hat mich dabei gestört, dass bei mehr als 4 Kontrollpunkten im Profil diese "Knotenpunkte" auftauchen.
Warum das so funktioniert und mit welchem Algorithmen-Hintergrund das plötzlich geht, verschließt sich mir noch.
Jedenfalls lassen sich aus dem vorgestellten Profil allerlei andere Profilkonstruktionen recht einfach ableiten.
Wenn du knickfreie Änderung der Krümmung brauchst, muss es ab 5 Poles eine BSpline Degree 4 sein.
cp_098.png
cp_098.png (22.47 KiB) Viewed 1096 times
User avatar
hammax
Veteran
Posts: 1991
Joined: Thu Jan 19, 2017 5:03 pm
Location: Ammersee DE

Re: B-Spline mit Kontrollpunkten und Polen

Post by hammax »

… ich nehme mal an, dass der obige BSpline mit dem Tool der CurvesWB gezeichnet ist.
Problem: Dieses Tool ist in Python3 und wird deshalb z.B. bei Win10_32 gar nicht zur Verfügung gestellt.
Hier die Daten des NormProf aus dem CurvesWB-InfoTool.

NormProf_3.PNG
NormProf_3.PNG (5.81 KiB) Viewed 1077 times
User avatar
microelly2
Veteran
Posts: 4688
Joined: Tue Nov 12, 2013 4:06 pm
Contact:

Re: B-Spline mit Kontrollpunkten und Polen

Post by microelly2 »

hammax wrote: Thu Dec 12, 2019 6:02 am … ich nehme mal an, dass der obige BSpline mit dem Tool der CurvesWB gezeichnet ist.
Problem: Dieses Tool ist in Python3 und wird deshalb z.B. bei Win10_32 gar nicht zur Verfügung gestellt.
Hier die Daten des NormProf aus dem CurvesWB-InfoTool.
Ich mach das so,
https://youtu.be/EQ6_5EFUiI4
aber das ist alles auch nur python3 und ubuntu,
ich kann den wichtigen teil heute nachtmittag als makro extrahieren damit es auch mit py2 geht:
aus einer Anzahl Kugeln eine Spline vom Grad 4 erzeugen
User avatar
microelly2
Veteran
Posts: 4688
Joined: Tue Nov 12, 2013 4:06 pm
Contact:

Re: B-Spline mit Kontrollpunkten und Polen

Post by microelly2 »

Ein paar Kugeln erzeugen, alle auswählen dann ..

Code: Select all


sel=Gui.Selection.getSelection()

degA=4
periodic=False
#periodic=True

poles=[s.Shape.CenterOfMass  for s in sel]
countA = len(poles)

sf=Part.BSplineCurve()

if not periodic:
	multA=[degA+1]+[1]*(countA-1-degA)+[degA+1]
	knotA=range(len(multA))

else:
	multA=[1]*(countA+1)
	knotA=range(len(multA))
	
sf=Part.BSplineCurve()
sf.buildFromPolesMultsKnots(poles,multA,knotA,periodic,degA)
shape=sf.toShape()

Part.show(shape)
User avatar
hammax
Veteran
Posts: 1991
Joined: Thu Jan 19, 2017 5:03 pm
Location: Ammersee DE

Re: B-Spline mit Kontrollpunkten und Polen

Post by hammax »

… funktioniert!!!
Dann dachte ich schon, man könne mit der Kugelgröße das Polgewicht beeinflussen.

SpheresMacro.PNG
SpheresMacro.PNG (10.13 KiB) Viewed 1005 times
User avatar
looo
Veteran
Posts: 3941
Joined: Mon Nov 11, 2013 5:29 pm

Re: B-Spline mit Kontrollpunkten und Polen

Post by looo »

Interessant, ich verwende jetzt auch bsplines vom grad 4 für die Profile. Scheint wohl ein brauchbarer Ansatz zu sein.

Bezüglich 32 bit: Das ist wirklich ein schwieriges Thema. Theoretisch ist es schon möglich aktuelle Abhängigkeiten und das aktuelle FreeCAD für 32 bit zu kompilieren, aber Bibliotheken wie qt sind mittlerweile so umfangreich und schwierig zu kompilieren, dass das echt ein schwieriges Projekt ist. Wenn ich irgendwas durch das Paketmanagment mittels conda gelernt habe, dann ist es das, dass man immer schön mit dem Strom mitfließen sollte...

Man kann natürlich auch auf diverse Abhängigkeiten verzichten (scipy, pandas ...) aber meiner Meinung nach ist die Verwendung von solchen Abhängigkeiten genau das was opensource ausmacht...

Also am besten Umsteigen auf 64 bit, falls irgendwie möglich. Ich hätt noch einen älteren 64-bit laptop (akku ist tot aber den gibts noch zum nachkaufen, mit ubuntu 18.04) falls Interesse besteht.
User avatar
hammax
Veteran
Posts: 1991
Joined: Thu Jan 19, 2017 5:03 pm
Location: Ammersee DE

Re: B-Spline mit Kontrollpunkten und Polen

Post by hammax »

… danke looo, ich werde mich was Win10_64 und einen weiteren PC anbelangt, in Geduld üben.
Hatte mir schon gedacht, dass es da Schwierigkeiten gibt, zumal FC.19-pre bezüglich Win nur noch auf der 64er Schiene fährt.
Aber ich schaue gerne zu...
User avatar
microelly2
Veteran
Posts: 4688
Joined: Tue Nov 12, 2013 4:06 pm
Contact:

Re: B-Spline mit Kontrollpunkten und Polen

Post by microelly2 »

looo wrote: Thu Dec 12, 2019 4:20 pm Interessant, ich verwende jetzt auch bsplines vom grad 4 für die Profile. Scheint wohl ein brauchbarer Ansatz zu sein.
Ich habe gelernt, dass Grad >3 für das menschliche Auge nichts mehr bringt. Deshalb habe ich normalerweise auch das als Grenze.
Wenn Profile diese höhere Stetigkeit brauchen, ist das ja auch ein Grund die obere Grenze höher zu setzen.
Für optische System hab ich mal gehört, dass Grade über 5 keine Verbesserung bringen. Mit jedem Grad mehr steigt hat die Anzahl der Pole, welche die Lage eines Punktes beeinflussen und ein manuelles Editieren einer Kurve wird immer schwieriger.
Ich denke, man müsste einen Kurveneditor mit Grad 3 haben, wie es in 2D der Sketcher schon tut und dann noch einen algorithmischen Polierer, der die Krümmungsänderungen stetig macht und bestimmte Punkte, durch welche die Kurve unbedingt laufen muss, erhält.
Ich arbeite mit Bezier-Kurvern Grad 3, das ist eigentlich Inkscape. Wenn man da für ein Segment noch einen Punkt hinzunimmt, hat man dann Grad 4 und sollte auch manuell Glätte hinbekommen.
Werde ich demnächst ausprobieren.
Post Reply