Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
kurse:efcomputergrafik:kw4 [2020/01/23 08:53] Ivo Blöchliger [Blender] |
kurse:efcomputergrafik:kw4 [2020/02/12 21:06] (current) Ivo Blöchliger [Beschleunigung bei konstantem Geschwindigkeisbetrag 1] |
||
---|---|---|---|
Line 179: | Line 179: | ||
Diese zweite Ableitung berechnen wir nummerisch durch Ableiten der ersten: | Diese zweite Ableitung berechnen wir nummerisch durch Ableiten der ersten: | ||
\[ | \[ | ||
- | a_n(t(\ell)) := \frac{\textrm{d}v_n(\ell)}{\textrm{d}\ell} \approx \frac{v_n(t(\ell)+\Delta t)-v_n(t(\ell)-\Delta t)}{\ell(t+\Delta t)-\ell(t-\Delta t)} \approx \frac{v_n(t(\ell)+\Delta t)-v_n(t(\ell)-\Delta t)}{|p(t+\Delta t)-p(t-\Delta t)|} | + | a_n(t(\ell)) := \frac{\mathrm{d}v_n(\ell)}{\mathrm{d}\ell} \approx \frac{v_n(t(\ell)+\Delta t)-v_n(t(\ell)-\Delta t)}{\ell(t+\Delta t)-\ell(t-\Delta t)} \approx \frac{v_n(t(\ell)+\Delta t)-v_n(t(\ell)-\Delta t)}{|p(t+\Delta t)-p(t-\Delta t)|} |
\] | \] | ||
+ | Algebraisch erhält man folgendes: | ||
+ | \[ | ||
+ | \frac{\mathrm{d}}{\mathrm{d}\ell} \left(\frac{p' | ||
+ | \frac{p'' | ||
+ | \] | ||
+ | mit $e=\frac{p' | ||
===== Effektive Beschleunigung und Komponente in Bahnnormalebene ===== | ===== Effektive Beschleunigung und Komponente in Bahnnormalebene ===== | ||
Sei $v_{\text{eff}}(t) \in \mathbb{R}$ der Betrag der effektiven Bahngeschwindigkeit im Punkt zum entsprechenden $t$-Parameter. | Sei $v_{\text{eff}}(t) \in \mathbb{R}$ der Betrag der effektiven Bahngeschwindigkeit im Punkt zum entsprechenden $t$-Parameter. | ||
Line 283: | Line 289: | ||
g = Vector(0, | g = Vector(0, | ||
hmax = 40 # Hoehe fuer v=0 | hmax = 40 # Hoehe fuer v=0 | ||
+ | # Bahnpunkte: Ctrl-Links, Knoten, Ctrl-Rechts | ||
railspts=[[], | railspts=[[], | ||
while(ldone< | while(ldone< | ||
Line 300: | Line 307: | ||
# Ek = 1/2 * m * v^2 | # Ek = 1/2 * m * v^2 | ||
v = (2*ekin)**0.5 | v = (2*ekin)**0.5 | ||
+ | # Koordinatensystem (vorne, oben, rechts) | ||
k = mySplines[i].koordsyst(t, | k = mySplines[i].koordsyst(t, | ||
+ | # Bahnpunkte berechnen | ||
+ | # | ||
+ | # | ||
+ | # | ||
| | ||
+ | |||
+ | |||
+ | # Blender-Kurven aus den Bahnpunkten erzeugen | ||
+ | for j in range(3): | ||
+ | curvedata = bpy.data.curves.new(name=" | ||
+ | curvedata.dimensions = ' | ||
+ | objectdata = bpy.data.objects.new(" | ||
+ | objectdata.location = (0,0,0) | ||
+ | objectdata.data.bevel_depth = 0.01 | ||
+ | |||
+ | railsCol.objects.link(objectdata) | ||
+ | |||
+ | polyline = curvedata.splines.new(' | ||
+ | polyline.bezier_points.add(len(railspts[j])-1) | ||
+ | |||
+ | for idx, (h1, knot, h2) in enumerate(railspts[j]): | ||
+ | point = polyline.bezier_points[idx] | ||
+ | point.co = knot | ||
+ | point.handle_left = h1 | ||
+ | point.handle_right = h2 | ||
+ | point.handle_left_type = ' | ||
+ | point.handle_right_type = ' | ||
+ | |||
</ | </ |