kurse:efcomputergrafik:kw4

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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'}{|p'|}\right) = 
 +\frac{p'' - e \cdot \left( e \cdot p''\right)}{|p'|^2}
 +\]
 +mit $e=\frac{p'}{|p'|}$. Das ist bis auf den Faktor $|p'|^2$ das Gram-Schmidt Verfahren. Sachen gibts...
 ===== 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,0,-9.81) # Gravitationbeschleunigung g = Vector(0,0,-9.81) # Gravitationbeschleunigung
 hmax = 40  # Hoehe fuer v=0 hmax = 40  # Hoehe fuer v=0
 +# Bahnpunkte: Ctrl-Links, Knoten, Ctrl-Rechts
 railspts=[[],[],[]]  # Bahnpunkte, Schiene L, Schiene R, Träger  railspts=[[],[],[]]  # Bahnpunkte, Schiene L, Schiene R, Träger 
 while(ldone<totalLength): while(ldone<totalLength):
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,v,g)     k = mySplines[i].koordsyst(t,v,g)
 +    # Bahnpunkte berechnen
 +    #
 +    #
 +    #
          
 +
 +
 +# Blender-Kurven aus den Bahnpunkten erzeugen
 +for j in range(3):
 +    curvedata = bpy.data.curves.new(name="rail"+str(j), type='CURVE')
 +    curvedata.dimensions = '3D'
 +    objectdata = bpy.data.objects.new("rail"+str(j), curvedata)    
 +    objectdata.location = (0,0,0)
 +    objectdata.data.bevel_depth = 0.01
 +
 +    railsCol.objects.link(objectdata)
 + 
 +    polyline = curvedata.splines.new('BEZIER'   
 +    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 = 'ALIGNED'
 +        point.handle_right_type = 'ALIGNED'
 +
 </code> </code>
  • kurse/efcomputergrafik/kw4.1579765991.txt.gz
  • Last modified: 2020/01/23 08:53
  • by Ivo Blöchliger