kurse:efcomputergrafik:kw48

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
Last revision Both sides next revision
kurse:efcomputergrafik:kw48 [2019/11/27 10:49]
Ivo Blöchliger [Ableitungen von $p(t)$ für $t \in [0,1]$]
kurse:efcomputergrafik:kw48 [2019/12/04 11:48]
Ivo Blöchliger
Line 40: Line 40:
 $$-6\,c\,\left(3\,t-1\right)+6\,b\,\left(3\,t-2\right)+6\,d\,t-6\,a\, $$-6\,c\,\left(3\,t-1\right)+6\,b\,\left(3\,t-2\right)+6\,d\,t-6\,a\,
  \left(t-1\right)$$  \left(t-1\right)$$
 +
 +Interessant sind auch hier die Werte von $a(0)$ und $a(1)$:
 +$$a(0) = 6\,c-12\,b+6\,a$$
 +$$a(1) = 6\,d-12\,c+6\,b$$
  
  
Line 98: Line 102:
  
 ===== Umgang mit Inkscape ===== ===== Umgang mit Inkscape =====
 +
 +Download für die Schulcomputer: https://fginfo.ksbg.ch/dokuwiki/doku.php?id=lehrkraefte:blc:informatik:glf19:glf19#make_the_computer_zimmer_great_again
 +
 Nützliche Tastenkombinationen: Nützliche Tastenkombinationen:
   * F1: Auswahlmodus (zum kopieren, löschen, verschieben, rotieren)   * F1: Auswahlmodus (zum kopieren, löschen, verschieben, rotieren)
-  * F2: Edit-Modus (Manipulation der Pfadelemente.+  * F2: Edit-Modus (Manipulation der Pfadelemente).
  
 Pfad-Manipulationen: Pfad-Manipulationen:
Line 106: Line 113:
   * Ctrl-K: Combine (mehrere Pfade in einen Pfad zusammenfassen).    * Ctrl-K: Combine (mehrere Pfade in einen Pfad zusammenfassen). 
  
-===== G-Code für den Plotter ===== +===== Text-Analyse mit Python ===== 
-Der Nullpunkt befindet sich bei den Radien $r_1=r_2=1445$ (in mm). Pro Motorschritt verändern sich die Radien um $\approx 0.0157029$ (mm). Die Motoren haben einen Abstand von 1930 mm.+=== Datei einlesen === 
 +Von https://stackoverflow.com/questions/7409780/reading-entire-file-in-python 
 +<code python> 
 +with open('Path/to/file', 'r'as content_file: 
 +    content = content_file.read() 
 +</code> 
 +=== Text finden === 
 +https://www.geeksforgeeks.org/string-find-python/ 
 +<code python> 
 +position = content.find("<path ",startPosition) die Startposition ist optional, kann gebraucht werden, um weitere Vorkommen zu finden. 
 +if (position!=-1): # Wirklich was gefunden 
 +  # tu was damit 
 +</code> 
 +=== Substring === 
 +<code python> 
 +a="0123456789" 
 +a[2:5] # -> liefert "234" 
 +</code> 
 +=== Text Analyse === 
 +Ist der Path-String einmal gefunden, geht es darum, diesen zu analysierenAls erster Schritt soll dieser nach Leerschlägen aufgeteilt werden: 
 +<code python> 
 +txt = "foo bar baz boo" 
 +items = txt.split(" ") 
 +</code>
  
-Der G-Code bezieht sich direkt auf die Motorenschritte (was eigentlich gerade nicht der Sinn von G-Code ist).+=== Convertierung in Zahlen === 
 +<code python> 
 +zahl = float("3.14") 
 +</code>
  
-Nur G1 (lineare Interpolation) ist implementiert: 
-  * G1 X-400 Y800  (Gehe zur absoluten Position -400 Schritte (Motor links) und +800 Schritte (Motor rechts). 
-  * G1 Z0 (Stift hoch, nicht zeichnen) 
-  * G1 Z1 (Stift runter, zeichnen) 
-Nach jedem Kommando muss auf ein 'OK\n' gewartet werden. 
  
 +<hidden converter.py>
 +<code python converter.py>
 +
 +def convert(elements):
 +    # Aktuelle Koordinaten
 +    x = 0
 +    y = 0
 +    # Position im elements Array
 +    e = 0
 +    # letztes Kommando
 +    lastCMD = ""
 +    while e < len(elements):
 +        if elements[e]=="M":  # Move absolute
 +            x = float(elements[e+1])
 +            y = float(elements[e+2])
 +            e = e+3   # 3 Element konsumiert
 +        elif elements[e]=="m":  # Move relative
 +            x = x + float(elements[e+1])
 +            y = y + float(elements[e+2])
 +            e = e+3   # 3 Element konsumiert
 +
 +
 +
 +with open('text.svg', 'r') as content_file:
 +    content = content_file.read()
 +    
 +# print(content)
 +# Anfangsposition vom path
 +position = content.find("<path")
 +if position<0:
 +    raise BaseException("Kein <path gefunden!")
 +
 +#print("Position %d" % position)
 +# Erste 20 Zeichen vom path
 +#print(content[position:(position+20)])
 +
 +# d=" suchen... (ab der Position position)
 +while True:
 +    position = content.find("d=\"", position)
 +    if position<0:
 +        BaseException("Kein d= gefunden")
 +        
 +    if content[position-1]<'0': # kein Buchstabe vor d
 +        break
 +    
 +    position+=1
 +# Erste 20 Zeichen vom d
 +
 +start = position+3
 +ende = content.find("\"", start)
 +
 +pfaddef = content[start:ende]
 +print(pfaddef)
 +pfaddef = pfaddef.replace(",", " ")
 +print(pfaddef)
 +elemente = pfaddef.split(" ")
 +print(elemente)
 +
 +</code>
 +</hidden>
  
  • kurse/efcomputergrafik/kw48.txt
  • Last modified: 2019/12/04 11:48
  • by Ivo Blöchliger