Punkte von Graphikansicht in Tabellenansicht übertragen

Josef Lechner shared this question 9 months ago
Needs Answer

Das Übertragen von Punkten aus der Tabellenansicht in die Graphikansicht funktioniert sehr einfach mittels "Erzeugen", die Umkehrung habe ich noch nicht gefunden.


Also folgendes schaffe ich (bisher) nicht:


1) Man setzt im Grafikfenster eine beliebige Anzahl von Punkten, z.B.:

c826ff019d9c55c7522a52ab65c18a2b


2) Dann markiert man sie alle und macht irgendeinen Befehl (?), sodass man die Koordinaten in das Tabellenfenster bekommt.

01ac2c00366951766ca8f27fa7e9a1bb


Ich hätte das gerne in der Form (x-Koordinaten in einer Spalt, y-Koordinate in der anderen Spalte):


Geht das irgendwie schnell? (Mit einem Script schaffe ich es, da muss aber die Anzahl der Punkte und ihre Namen feststehen. Die Anzahl der Punkte und ihre Namen sollen aber beliebig sein.)


Mit besten Grüßen,

Josef Lechner

Comments (5)

photo
1

Beschreibung für GGB 5.0

Warnung: bei diesem Weg sind die Werte in der Tabelle nicht von den Punkten abhängig

Sollte das notwendig sein: siehe meinen nächsten Post


  1. Setze die Sortierung in der Algebra-Ansicht auf Konstruktionsreihenfolge
  2. Erstelle die Punkte
  3. Selektiere die Punkte in der Algebra-View durch anklicken (allenfalls shift- oder ctrl- Taste verwenden)
  4. DragAndDrop eines der markierten Element in die Eingabezeile
  5. In der Eingabezeile erscheint zB {A,B,C,D,E,F,G}
  6. Ergänze in der Eingabezeile FülleSpalte(1, x( {A, B, C, D, E} ) )
  7. Enter
  8. Den Rauf-Runter-Pfeil ganz rechts in der Eingabezeile anklicken
  9. In der Eingabezeile steht jetzt die letzte Eingab (siehe oben vor Enter)
  10. Den Befehl abändern in: FülleSpalte(2, y( {A, B, C, D, E} ) )
  11. Enter
  12. Wenn gewünscht: die letzten beiden kreierten Listen (zB l4 und l5) im Algebrafenster markieren und löschen

Im ersten Parameter von FülleSpalte wird die Spalten-Nummer eingetragen 1 für A, 2 für B...usw

Spielvariante:


  • Nach Punkt 5.) Enter und damit eine Liste kreieren (der Name sie zB l3)
  • In Punkt 6.) eintippen: FülleSpalte(1, x( l3 )
  • In Punkt 10: FülleSpalte(2, y( l3 ) )

photo
1

Variante mit Abhängigkeit zwischen Tabelle und Punkten

.

  1. Punkte 1 bis 5 gemäss vorhergendem Post. Es entsteht eine Liste der Punkte (zB mit Name l3)
  2. In der Tabelle A1 den Wert 1 eintragen
  3. In der Tabelle A2 den Wert 2 eintragen
  4. A1 bis A2 markieren und mit dem unten rechts angezeigten kleinen Rechteck nach unten ziehen (zB bis Zeile 100)
  5. Es werden Werte in der Spalte A erzeugt: 1,2,3.....100
  6. eintragen in B1: Wenn($A1<= Länge(l3), x(Element(l3, $A1)))
  7. B1 markieren und mit dem unten rechts angezeigten kleinen Rechteck eine Zelle nach rechts ziehen und in C1 das x durch y ersetzen.
  8. Note: $A besagt absolute Adressierung der Spalte A, deshalbt wird auch in Spalte C die Spalte A verwendet. Ohne das $ wäre beim rechts ziehen aus dem An ein Bn geworden. (Gleich wie in Excel)
  9. B1 bis C1 markieren und mit dem unten rechts angezeigten kleinen Rechteck nach unten ziehen (zB bis Zeile 100)
  10. Falls erwünscht können die zuvielen Zeilen gelöscht werden (dann aber könnte die liste (zB l3) nicht ohne weiteres ergänzt werden. Die Fragezeichen bei den überzähligen Zeilen lassen sich nicht unterdrücken, wenn mit den Werten gerechnet werden soll. Falls in der Tabelle nur angezeigt werden soll so könnte man in Punkt 6) folgenden Befehl einsetzen (der die Fragezeichen unterdrückt, die Werte sind dann Text) Wenn($A1<=Länge(l3),""+x(Element(l3, $A1)), "")

photo
1

Und zuguter Letzt noch die Variante mit einer mit Folge() generierten Script-Liste (die Tabelle ist wie in Variante 2 abhängig von der Liste).

  • Punkt 1 bis 5 im ersten Post. Es wird eine liste (zB l1) erzeugt
  • In Eingabezeile: scrTabFüll = Reduzieren(Folge({"A" + (n) + "=x(Element(l1," + (n) + "))", "B" + (n) + "=y(Element(l1," + (n) + "))"}, n, 1, Länge(l1)))
  • Enter
  • In Eingabezeile (einmalig oder dann wenn sich l1 in der Länge verändert hat): Ausführen(scrTabFüll)
  • Falls gewünscht die neuen Tabellen-Zellen in der Algebraansicht markieren und mit Rechtsklick als Hilfsobjekte deklarieren.


Hinweis zu Script-Listen:

Es handelt sich um Listen deren Elemente Text-Objekte sind. Jedes dieser Text-Objekte enthält einen beliebigen Befehl, wie er auch in der Eingabezeile eingegeben werden könnte (auch Script-Befehle). Innerhalb eines (Text-) Elementes müssen die englischen Varianten der Befehle verwendet werden.

Mit Ausführen(<Script-Liste>) werden alle (Text-) Elemente der Script-Liste der Reihe nach abgearbeitet.

Dabei können neue Objekte erstellt oder geupdatet werden.

Die Möglichkeit von Parametern machen Script-Listen zu einem mächtigen Instrument. Dazu im Manual nachschauen.

Angestossen werden Script-Listen immer innerhalb eines Scriptes (zB ScriptOnUpdate, oder Button usw) oder direkt über die Eingabezeile

photo
1

Vielen Danke für die Beantwortung der Frage!

MhG, JL

photo
1

Irgend eine schemenhafte Erinnerung im Hinterkopf hat mir keine Ruhe gelassen:

Es gibt noch eine Möglichkeit mittels DragAndDrop von der AlgebraAnsicht in die Tabelle bei gleichzeitigem drücken von Ctrl.

Es erscheint ein Auswahl-Fenster in dem man auswählen kann

  • entweder frei oder abhängig
  • Transponiert ja/nein

.

Du benötigst 2 Spalten (x und y)

Eine Möglichkeit das zu erreichen ist:

  • Kreiere die Liste (Punkte 1 bis 5) (zB als l1)
  • Splitte l1 auf mit: m1 = Zip({x(P), y(P)}, P, l1)
  • DragAndDrop m1 bei gedrückter Ctrl-Taste nach A1
  • Wähle im erscheinenden Fenster: Abhängig, nicht Transponiert

Das Resultat ist identisch mit der Vorangehenden Variante (Script-Liste)

--------------------------------------------------------------------------------

Uebrigens: Ich verwende für mich selbst die 2. Variante, weil dort die Anzahl der Punkte dynamisch verwaltet wird.

© 2019 International GeoGebra Institute