gcc c++ 3d Vektoren Standard?

Gast #4577714
Lesenswert?

Hallo Torsten,

das sieht interessant, aber auch etwas zu kompliziert aus.
Die Library scheint ziemlich mächtig und aus irgendwelchen Gründen 
befindet sich der gesamte Code in Header-Files anstatt in cpp-Files. Das 
erscheint mir etwas seltsam.

Ich brauche eigentlich nur wenige Funktionen wie Skalarprodukt, 
Vektorprodukt und Drehoperatoren und das ganze sollte unter 1-2Kbyte 
Speicher belegen.
Gast #4577716
Lesenswert?

Markus schrieb:
> Ich brauche eigentlich nur wenige Funktionen wie Skalarprodukt,
> Vektorprodukt und Drehoperatoren und das ganze sollte unter 1-2Kbyte
> Speicher belegen.

Ist doch schnell selber programmiert? Dafür ist die eigen-Bibliothek 
tatsächlich etwas zu mächtig.
Gast #4577824
Lesenswert?

Moin,

Ich hab jetzt nur nenn kurzen Blick drauf geworfen.
Das alles in den Headern ist, liegt an den Templates. Wenn man die 
verwendet, kann man das nicht mehr in .h und .cpp aufteilen. Das bringt 
den Compiler durcheinander.
(Firma: Torrox.de) #4577865
Lesenswert?

Markus schrieb:
> das sieht interessant, aber auch etwas zu kompliziert aus.
> Die Library scheint ziemlich mächtig und aus irgendwelchen Gründen
> befindet sich der gesamte Code in Header-Files anstatt in cpp-Files. Das
> erscheint mir etwas seltsam.

Naja, dass ist eigentlich bei modernen C++ Libraries fast schon üblich. 
Mir ist aber nicht klar, was Du suchst. Es hat sich bestimmt noch 
niemand hingesetzt und eine Library geschrieben, die exakt die Handvoll 
Funktion enthält, die Du gerade jetzt brauchst.

Entweder Du schreibst das selbst (und mit Schreiben ist es in der Regel 
nicht getan, da fehlt dann auch noch die Validieren, Dokumentation, 
Optimierung etc.), oder Du setzt Dich mal einen halben Tag hin und ließt 
die Dokumentation einer Library, die so etwas kann und dann hat Dein 
Werkzeugkasten wieder ein wertvolles Werkzeug mehr.
Gast #4578082
Lesenswert?

Torsten R. schrieb:
> Und wenn ich mir die Beispiele hier:
> http://eigen.tuxfamily.org/dox/group__TutorialMatr... mal
> angucke, sieht dass ganze doch extrem einfach aus.

Ist es auch. Ich habe mich mal in eigen während meines Masters 
eingearbeitet, da ging es um Berechnung von Eigenwerten für eine 
Schwingungsanalyse.

Hatte die Analyse zunächst in Matlab entwickelt und anschließend auf C++ 
mit eigen portiert. War kaum ein Tag arbeit. Die Dokumentation ist 
außerdem sehr gut und bei doofen Fragen findet man per google schnell 
Antwort :)
Gast #4578931
Lesenswert?

Eigen ist wirklich zu empfehlen. - Ist zwar sehr maechtig, aber hat auch 
den Vorteil, dass einfache Sachen dennoch relativ schnell machbar sind.

Als Einstieg vielleicht die textuelle Quickreference:
https://eigen.tuxfamily.org/dox-devel/AsciiQuickReference.txt


Bsp Vektormultiplikation:
1
#include <Eigen/Dense>
2

3
int main(){
4
  Eigen::VectorXd a(2),b(2); //2 gibt die Dimension des Vekt an.
5
  a << 1,2; b<<2,1; //Vekt befuellen
6
  double resultDotProd = a.dot(b); // oder wahlweise auch einfach a.tranpose()*b;
7
  
8
  //Fuer das aeussere Prod. brauchts eine 2x2 Matrix
9
  Eigen::MatrixXd resultOuterProd(2,2);
10
  resultOuterProd = a * b.transpose();
11
}

lg
Gast #4578941
Lesenswert?

Markus schrieb:
> das sieht interessant, aber auch etwas zu kompliziert aus.
> Die Library scheint ziemlich mächtig und aus irgendwelchen Gründen
> befindet sich der gesamte Code in Header-Files anstatt in cpp-Files. Das
> erscheint mir etwas seltsam.

Mhm, noch nicht viel Erfahrung mit C++?

Markus schrieb:
> Ich brauche eigentlich nur wenige Funktionen wie Skalarprodukt,
> Vektorprodukt und Drehoperatoren und das ganze sollte unter 1-2Kbyte
> Speicher belegen.

Ja dann ist die Library doch perfekt, es wird dank Templates nur das 
Kompiliert was du nutzt, nicht mehr und nicht weniger.
Gast #4579272
Lesenswert?

>Autor: Bastler (Gast)
>Torsten R. schrieb:
>> Und wenn ich mir die Beispiele hier:
>> http://eigen.tuxfamily.org/dox/group__TutorialMatr... mal
>> angucke, sieht dass ganze doch extrem einfach aus.

>Ist es auch. Ich habe mich mal in eigen während meines Masters
>eingearbeitet, da ging es um Berechnung von Eigenwerten für eine
>Schwingungsanalyse.

Es ist genau dann einfach und universell, wenn man es in ein ARDUINO 
Programm integrieren kann.
Dass das möglich ist, wage ich allerdings zu bezweifeln.

Das Problem bei solch einer Bibliothek ist grundsätzlich, dass man am 
Anfang nicht weiß, ob sie für das eigene Problem zu gebrauchen ist. Das 
ist z.B. bei den ARDUINO-Libs sehr gut gelöst: einfach laden, 
compilieren, ausprobieren fertig. Eine Sache von ein paar Minuten.
(Firma: Torrox.de) #4579468
Lesenswert?

Markus schrieb:
> Es ist genau dann einfach und universell, wenn man es in ein ARDUINO
> Programm integrieren kann.
> Dass das möglich ist, wage ich allerdings zu bezweifeln.

Probier es aus! C++ hat den Vorteil, dass Du in der Regel für nix 
zahlst, was Du nicht auch nutzt. Würde mich wundern, wenn eine selbst 
gestrickte Lösung schneller und effektiver wäre. Wie gesagt, so etwas 
kann man selbst auf einem Cortex M0 einsetzen.

> Das Problem bei solch einer Bibliothek ist grundsätzlich, dass man am
> Anfang nicht weiß, ob sie für das eigene Problem zu gebrauchen ist. Das
> ist z.B. bei den ARDUINO-Libs sehr gut gelöst: einfach laden,
> compilieren, ausprobieren fertig. Eine Sache von ein paar Minuten.

Wo siehst Du jetzt den großen Unterschied zur Eigen-Library?
Gast #4579630
Lesenswert?

>Wo siehst Du jetzt den großen Unterschied zur Eigen-Library?

In der Einfachheit des Vorgangs. Laden, Compile-Knopf drücken .. läuft.

Zum ersten Ausprobieren ist es sehr gut, wenn man sich nicht um 
Verzeichnisse, Make-Files, Compilereinstellungen, welches Demo, 
Versionsnummern usw. kümmern muss.
Bei Apple würde es wohl "Usabillity" heißen.

>Probier es aus! C++ hat den Vorteil, dass Du in der Regel für nix
>zahlst, was Du nicht auch nutzt. Würde mich wundern, wenn eine selbst
>gestrickte Lösung schneller und effektiver wäre.

Verstehe mich nicht falsch. Ich habe keine Zweifel daran, dass die 
Eigen-Library ziemlich ausgereift und akademisch anspruchsvoll ist.
Meine Fragestellung ist nur:

- Ist sie schnell?
- braucht sie wenig Speicher?
- Läuft sie auf einem Cortex M0 mit minimalem Platz und 
Resourcenverbrauch?
- ist sie einfach zu integrieren?

Wenn es ein Beispiel für eine Arduino Zero gäbe, wäre die Frage ziemlich 
schnell beantwortet. Das ist auch die Philosophie des ARDUINO-Systems: 
Löse das Problem schnell und effektiv, vermeide unnötige Technikprobleme 
wie z.B. die lange Suche nach Compiler-Configurationen, falsche 
Pfadeinstellungen, nicht aufzufindende Abhängigkeiten, zu großer 
Ramspeicherbedarf usw.

Das Problem ist hier nur, dass ich mich vermutlich eine Woche mit der 
Eigen-Library beschäftigen muss, bis ich diese Fragen für mich 
beantworten kann. Dann investiere ich lieber einen halben Tag für die 
paar Funktionen die ich brauche und programmiere es selber.
Gast #4579644
Lesenswert?

Markus schrieb:
> Das Problem ist hier nur, dass ich mich vermutlich eine Woche mit der
> Eigen-Library beschäftigen muss, bis ich diese Fragen für mich
> beantworten kann.

Äh, was? Bist du geistig eingeschränkt oder warum braucht das so lange? 
Letztens habe ich eine Library in ein Projekt eingebunden, die auf eigen 
basiert. Also musste Eigen in mein Projekt eingebunden werden. Das, 
wofür du eine Woche brauchen willst, beschränkt sich auf die Übergabe 
von 'pkg-config --cflags --libs eigen' an den Compiler. Dann noch ein 
include, und fertig. In einer Woche kann man alle 9000 Compiler Flags 
vom GCC lernen, Gott weiß warum du so lange brauchst um das einzige 
benötigte Flag -I zu finden, bzw. die Doku in der der pkg-config Aufruf 
steht.
Die Installation von eigen ist sogar noch einfacher als die von Arduino 
Libs, da sie unter Linux ruck zuck per Paketmanager installiert werden 
kann.
Gast #4580232
Lesenswert?

>Äh, was? Bist du geistig eingeschränkt oder warum braucht das so lange?
>Letztens habe ich eine Library in ein Projekt eingebunden, die auf eigen
>basiert

Na dann mach mal und binde die Lib mal schnell in eine kleines 
Arduino-Demo ein bevor alles nur leeres Gewäsch ist.
Gast #4580258
Lesenswert?

Markus schrieb:
> Na dann mach mal und binde die Lib mal schnell in eine kleines
> Arduino-Demo ein bevor alles nur leeres Gewäsch ist.

Keine Ahnung wie man bei Arduino Compiler-Flags eingibt. Ich hab es 
daher so gemacht:
* In Eclipse ein Projekt für den STM32F051 angelegt
* In den Projekt-Einstellungen zu den Compiler-Flags `pkg-config 
--cflags eigen3` hinzugefügt
Fertig. Jetzt kann Eigen verwendet werden. Hat 5 Minuten gedauert. So 
schnell kriegst du keine Matrix-Algorithmen implementiert.

Hier noch ein sinnloses Dummy-Programm zur Demonstration dass es 
funktioniert:
1
#include <Eigen/Dense>
2

3
volatile float x;
4

5
int main () {
6
  Eigen::Matrix<float, 2, 2> m;
7
  m(0, 0) = 3;
8
  m(1, 0) = 2.5;
9
  m(0, 1) = -1;
10
  m(1, 1) = m(1, 0) + m(0, 1);
11

12
  Eigen::Matrix<float, 2, 1> v;
13
  v(0, 0) = 1;
14
  v(1, 0) = 2;
15

16
  Eigen::Matrix<float, 2, 1> w = m * v;
17

18
  while (1) {
19
    // Dummy-Ausgabe
20
    x = w(0);
21
    v += w;
22
    w = m * v;
23
  }
24
}

Wenn du rausfindest wie man der Arduino-IDE Compiler-Flags eingibst, 
kannst du es 1:1 so machen. Aber dem TO ging es überhaupt nicht um 
Arduino, daher passt das so...
Gast #4580757
Lesenswert?

Dr. Sommer schrieb
>Ich hab es daher so gemacht:
Danke für die Code-Beispiele.

>Keine Ahnung wie man bei Arduino Compiler-Flags eingibt.

Siehst Du, genau an diesem Punkt unterscheidet sich die Theorie von der 
Praxis.

Theoretisch ist es leicht und es geht, nur in der Praxis geht es 
nicht.

Deshalb möchte ich mir erlauben, Dir für die Zukunft zu empfehlen, etwas 
weniger voreilig in der Wortwal zu sein:

Dr. Sommer schrieb:
>Äh, was? Bist du geistig eingeschränkt oder warum braucht das so lange?
Gast #4580936
Lesenswert?

Markus schrieb:
> Theoretisch ist es leicht und es geht, nur in der Praxis geht es
> nicht.

Jetzt habe ich extra für dich herausgesucht, wie man in Arduino 
Libraries erstellt. Auch das hat keine Woche gedauert:
1. Aktuelle Eigen Version ( 
http://bitbucket.org/eigen/eigen/get/3.2.8.tar.bz2 ) herunterladen
2. Archiv entpacken
3. Den entpackten Ordner von "eigen-eigen-07105f7124f9" nach "Eigen3" 
umbenennen
4. Alles im Ordner löschen außer dem Unterordner "Eigen"
5. Eine Datei namens "Eigen3.h" im Ordner "Eigen3" anlegen, und 
hineinschreiben:
1
#pragma push_macro("max")
2
#pragma push_macro("min")
3
#pragma push_macro("B1")
4
#pragma push_macro("B2")
5
#pragma push_macro("B3")
6

7
#undef max
8
#undef min
9
#undef B1
10
#undef B2
11
#undef B3
12

13
#include <Eigen/Eigen>
14

15
#pragma pop_macro("max")
16
#pragma pop_macro("min")
17
#pragma pop_macro("B1")
18
#pragma pop_macro("B2")
19
#pragma pop_macro("B3")
Dies ist erforderlich, da die Arduino IDE Makros definiert, die den 
Eigen-Code verwirren. Hier sieht man sehr deutlich die Probleme, die die 
völlig unnötige Nutzung von Makros statt Funktionen/Konstanten 
verursachen.
6. Den gesamten Eigen3 Ordner in den "libraries" Ordner im Sketchbook, 
also zB $HOME/sketchbook/libraries, verschieben.

Fertig. Jetzt kann man einen Beispiel-Arduino-Sketch anlegen:
1
#include <Eigen3.h>
2

3

4
volatile float x;
5

6
void setup() {
7
  Eigen::Matrix<float, 2, 2> m;
8
  m(0, 0) = 3;
9
  m(1, 0) = 2.5;
10
  m(0, 1) = -1;
11
  m(1, 1) = m(1, 0) + m(0, 1);
12

13
  Eigen::Matrix<float, 2, 1> v;
14
  v(0, 0) = 1;
15
  v(1, 0) = 2;
16

17
  Eigen::Matrix<float, 2, 1> w = m * v;
18

19
  while (1) {
20
    // Dummy-Ausgabe
21
    x = w(0);
22
    v += w;
23
    w = m * v;
24
  }
25
}
26

27
void loop() {
28
  // put your main code here, to run repeatedly:
29
  delay(1000);
30
  digitalWrite (13, HIGH);
31
  delay (1000);
32
  digitalWrite (13, LOW);
33
}
Und für einen der ARM-Arduinos, wie den Arduino Zero, kompilieren.

Für geistig eingeschränkte wie dich habe ich den genannten "Eigen3" 
Ordner noch als ZIP-Archiv angehängt. Das kannst du in der Arduino-IDE 
mit "Sketch->Include Library->Add .ZIP Library..." automatisch 
entpacken, sodass du direkt mit dem Sketch-Schreiben beginnen kannst.

Im ganzen Thread ging es überhaupt nicht um Arduino. Nur du hast damit 
angefangen, wie toll alles bei Arduino ist, und ich hatte dir gezeigt 
wie einfach es mit G++/Eclipse geht. Eine IDE, bei der man nichtmal 
Compiler-Flags eingeben kann, als Maß aller Dinge zu nehmen, finde ich 
etwas unrealistisch. Aber wie du siehst, ist es auch bei Arduino mit 
etwas mehr Frickelei schnell möglich. Selbst ein Genie hätte in der Zeit 
keine Matrix-Library mit allen nötigen Tests usw. implementieren können.
Angehängte Dateien:
(Firma: privatfrickler.de) #4580983
Lesenswert?

Hallo Markus,

ich finde es schon gelinde gesagt etwas unhöflich, zuerst

>Gibt es eine Standard Library für 3D Vektoren in C++, welche gut auf
>kleineren ARM-Controllern verwendet werden kann?
>Ich brauche ein paar Standard-Funktionen wie Multiplikation und
>Betragsbildung und will das Rad nicht neu erfinden.

nach einer c++ Standard Bibliothek zu fragen. Und dann, nachdem die 
hilfsbereiten Menschen hier genau diesen Wunsch passend und schnell 
erfüllt haben damit herauszurücken, dass es um eine schlüsselfertige 
Arduino-Bibliothek geht.

Frech!

vlg
 Timm
Gast #4581023
Lesenswert?

Dr. Sommer schrieb:
> Aber dem TO ging es überhaupt nicht um Arduino, daher passt das so...
Dr. Sommer schrieb:
> Im ganzen Thread ging es überhaupt nicht um Arduino.

Timm R. schrieb:
> ich finde es schon gelinde gesagt etwas unhöflich...
Huch, Markus ist ja der TO :D Das machts natürlich noch besser... Na 
eine schlüsselfertige und sehr mächtige Arduino-Library hat er jetzt ja 
mit Eigen...
Gast #4583227
Lesenswert?

Timm Reinisch (Firma: privatfrickler.de) (treinisch)
>Hallo Markus,

>ich finde es schon gelinde gesagt etwas unhöflich, zuerst

>>Gibt es eine Standard Library für 3D Vektoren in C++, welche gut auf
>>kleineren ARM-Controllern verwendet werden kann?
>>Ich brauche ein paar Standard-Funktionen wie Multiplikation und
>>Betragsbildung und will das Rad nicht neu erfinden.

>nach einer c++ Standard Bibliothek zu fragen. Und dann, nachdem die
>hilfsbereiten Menschen hier genau diesen Wunsch passend und schnell
>erfüllt haben damit herauszurücken, dass es um eine schlüsselfertige
>Arduino-Bibliothek geht.

Hallo Timm,

es ging in dem Thread gar nicht speziell um die Arduino-Library. Arduino 
ist nur ein Prüfstein, mit dem sich zeigen lässt dass etwas einfach zu 
benutzten ist. Fast alle Dinge sind dort so gemacht, dass sie sich 
einfach benutzen und testen lassen. Dieses Prinzip der einfachen 
"Usability" stünde vielen Open-Source-Projekten gut zu Gesicht.
Dr. Sommer hat hier eine gute Arbeit geleistet, so dass viele Nutzer die 
Libray jetzt ohne großen Aufwand testen können.
Allerdings muss ich sagen, dass ich seine Ausdrucksweise gelinde gesagt 
etwas "frech" finde.

>Frech!
Gast #4583888
Lesenswert?

Markus schrieb:
> Siehst Du, genau an diesem Punkt unterscheidet sich die Theorie von der
> Praxis.
>
> Theoretisch ist es leicht und es geht, nur in der Praxis geht es
> nicht.
Das geht auch in der Praxis ganz einfach. Das einzige was hier der 
beschränkende Faktor ist, ist diese verkackte Arduino-IDE.
Nimm eine andere IDE, oder noch besser, einen Textedior deiner Wahl und 
ein Makefile, und das Problem ist gelöst.
Streng genommen gibt es nicht mal ein Problem, bzw. sind nicht die 
Compilerflags das Problem, sondern die Arduino-IDE.
Weil es nicht vorgesehen ist, das du da was ändern könnne sollst. Soll 
ja schließlich idiotensicher und für jeden ganz einfach benutzbar sein.

Wenn mans aber doch machen muss, kann man in der Datei platform.txt die 
Compilerflags eintragen...
Gast #4583982
Lesenswert?

Markus schrieb:
> Arduino
> ist nur ein Prüfstein, mit dem sich zeigen lässt dass etwas einfach zu
> benutzten ist. Fast alle Dinge sind dort so gemacht, dass sie sich
> einfach benutzen und testen lassen. Dieses Prinzip der einfachen
> "Usability" stünde vielen Open-Source-Projekten gut zu Gesicht.

Arduino ist ein "Spielzeug" für alle, die sich nicht weiter in die 
Thematik einarbeiten wollen. Du kannst den Arduino Workflow nicht mit 
dem einer echten IDE vergleichen.
Desto einfacher die Programmierung/Nutzung ist, desto beschränkter ist 
man in den Möglichkeiten und genau an diese Grenze bist du mit der Lib 
gekommen.
Gast #4584403
Lesenswert?

>Arduino ist ein "Spielzeug" für alle, die sich nicht weiter in die
>Thematik einarbeiten wollen.

Das erinnert mich ein wenig an diese Physiker, die immer behaupten, 
Chemie sei eigentlich überflüssig, weil am Ende doch alles irgenwie 
Physik sei. Wenn sie dann mit ihrem physikalischen Handwerkszeug 
konkrete Problemstellungen aus der Chemie lösen sollen, kommt dabei aber 
meist nichts brauchbares heraus. Jedenfalls nicht in überschauberer 
Zeit.
Moderator #4584470
Lesenswert?

Markus schrieb:
> Gibt es eine Standard Library für 3D Vektoren in C++

Du suchtest eine Library. Eigen ist eine (Template-)Library, die
Tiny-3D-Engine

  https://github.com/mrt-prodz/ATmega328-Tiny-3D-Engine

die ich im Folgenden mit T3DE abkürzen werde, nicht. T3DE ist eine
fertige Anwendung zur Animation vordefinierter Mesh-Modelle. Du kannst
darraus natürlich den für dich relevanten Quellcode heraus- und
in deine eigene Anwendung hineinkopieren. Das ist aber sicher nicht
einfacher, als an den Anfang des Programms ein

1
#include <Eigen/Dense>

zu schreiben und ggf. den Include-Pfad passend zu setzen.

Markus schrieb:
> Ich brauche ein paar Standard-Funktionen wie Multiplikation und
> Betragsbildung und will das Rad nicht neu erfinden.

Eigen hat Betragsbildung, T3DE nicht.

Markus schrieb:
> Ich brauche eigentlich nur wenige Funktionen wie Skalarprodukt,
> Vektorprodukt und Drehoperatoren

Eigen hat das alles, in T3DE fehlen Skalarprodukt und Vektorprodukt
komplett, Drehungen sind nur um die Koordinatenachsen möglich.

Markus schrieb:
> Das Problem bei solch einer Bibliothek ist grundsätzlich, dass man am
> Anfang nicht weiß, ob sie für das eigene Problem zu gebrauchen ist. Das
> ist z.B. bei den ARDUINO-Libs sehr gut gelöst: einfach laden,
> compilieren, ausprobieren fertig. Eine Sache von ein paar Minuten.

Festzustellen, dass T3DE deinen Anforderungen nicht entspricht, dauert
für dich vermutlich deutlich länger als ein paar Minuten. Die
3D-Animation laufen zu lassen ist sicher kein Problem. Aber bist du
danach gescheiter also vorher? Das Einzige, was du dann weißt, dass die
enthaltenen Vektor- und Matrixfunktionen für exakt jene 3D-Animationen
wie in der Demo geeignet ist.

Nur noch ein paar Dinge, die mich persönlich an T3DE stören würden:

- Es fehlen die meisten Grundfunktionen für Vektoren und Matrizen.

- Da für Sinus und Cosinus Look-Up-Tabellen verwendet werden, ist die
  Winkelauflösung für Rotationen nur 1°. Für Animationen mag das
  reichen, für viele andere Anwendungen ist das zu grob.

- Sämtliche Operationen (Skalierung, Translation und Rotation) werden
  auf eine 4×4-Matrix-Multiplikation zurückgeführt, was sehr ineffzient
  ist.

- Da Rotationen nur um die Koordinatenachsen möglich sind, muss eine
  Rotation um eine andere Achse aus drei Einzelrotationen
  zusammengesetzt werden, was ebenfalls sehr ineffzient ist.

- usw., wenn man ernsthaft damit arbeiten würde, würden einem sicher
  noch weitere Dinge negativ auffallen.

Jetzt mal Hand auf's Herz: Wie lange hättest du gebraucht, um das selber
herauszufinden? Wirklich nur ein paar Minuten?

Programmieren ist eben trotz Arduino & Co. schon noch etwas mehr als nur
Copy/Paste ;-)


Markus schrieb:
> Gibt es eine Standard Library für 3D Vektoren in C++

Markus schrieb:
> Es ist genau dann einfach und universell, wenn man es in ein ARDUINO
> Programm integrieren kann.
> Dass das möglich ist, wage ich allerdings zu bezweifeln.

Markus schrieb:
> Wenn es ein Beispiel für eine Arduino Zero gäbe, wäre die Frage ziemlich
> schnell beantwortet.

Markus schrieb:
> Na dann mach mal und binde die Lib mal schnell in eine kleines
> Arduino-Demo ein bevor alles nur leeres Gewäsch ist

Markus schrieb:
> es ging in dem Thread gar nicht speziell um die Arduino-Library.

Vielleicht ist es ja keine böse Absicht, aber du führst hier die Leute
ganz schön an der Nase herum.
Gast #4586743
Lesenswert?

>Vielleicht ist es ja keine böse Absicht, aber du führst hier die Leute
>ganz schön an der Nase herum.

Ich weiß ehrlich gesagt nicht, was Du meinst.
Ich halte die Integration einer Library in die Arduino-Umgebung nach wie 
vor für einen hervorragenden Test.

Es kann damit nämlich gezeigt werden, dass

- eine Library wenig Speicher verbraucht ( Arduino Uno, 32KFlash, 2kRam)
- dass sie auch für 8Bit Prozessoren geeignet ist

und bei richtiger Integration der Library:

- Der One-Click-Test auf Eignung

>Jetzt mal Hand auf's Herz: Wie lange hättest du gebraucht, um das selber
>herauszufinden? Wirklich nur ein paar Minuten?

Wie kommst Du auf den schmalen Grad? Gefühlsmässig habe ich dazu eine 
viertel Stunde gebraucht. Was mich an den Routinen gestört hat, ist das 
verwenden fester Typen und die starre Struktur.

Meiner Meinung nach sind solche Threads sehr nützlich zu 
Materialsammlung. Das ist, was jeder Student lernt: Erst die Analyse des 
Standes der Technik durch umfangreiche Materialrecherche.

Wenn ich mir diesen Thread so anschaue, gibt es genau einen Vorschlag: 
Die "Eigen Library" und ich kann mir kaum vorstellen, dass dies wirklich 
die einzige Software dieser Art ist.
Moderator #4586848
Lesenswert?

Markus schrieb:
>>Vielleicht ist es ja keine böse Absicht, aber du führst hier die Leute
>>ganz schön an der Nase herum.
>
> Ich weiß ehrlich gesagt nicht, was Du meinst.
> Ich halte die Integration einer Library in die Arduino-Umgebung nach wie
> vor für einen hervorragenden Test.

Ok, das ist jetzt im Nachhinein klar. Aber zwischen deinen Beiträgen vom
15.05.2016 18:43 (wo du das ersten Mal den Arduino ins Spiel brachtest)
und vom 19.05.2016 10:14 (wo du erklärtest, dass der Arduino nur der
Prüfstein sein soll), ging ich (und offensichtlich auch andere) davon
aus, das der Arduino das Zielsystem ist.

Mehr noch: Deine weiteren Beiträge ließen annehmen, dass die Bibliothek
als vorgefertigtes Paket mit allen Arduino-spezifischen Compiler- und
Linker-Einstellungen verfügbar sein soll, was die Auswahl natürlich sehr
einschränkt.

Markus schrieb:
>>Jetzt mal Hand auf's Herz: Wie lange hättest du gebraucht, um das selber
>>herauszufinden? Wirklich nur ein paar Minuten?
>
> Wie kommst Du auf den schmalen Grad? Gefühlsmässig habe ich dazu eine
> viertel Stunde gebraucht.

Die folgende Aussage erweckte aber den Eindruck, dass du in der
Beurteilung fremder Software noch nicht ganz so fit bist:

Markus schrieb:
> Das Problem ist hier nur, dass ich mich vermutlich eine Woche mit der
> Eigen-Library beschäftigen muss, bis ich diese Fragen für mich
> beantworten kann.

Und wenn du tatsächlich in einer Viertelstunde herausgefunden hast, dass
der Code für dich nicht taugt, warum hast du das dann nicht gleich mit
dazu geschrieben? So musste man davon ausgehen, dass dieser Code deinen
Wünschen voll entspricht und du nur noch weitere Alternativen mit
ähnlichem Funktionsumfang suchst.

Markus schrieb:
> Wenn ich mir diesen Thread so anschaue, gibt es genau einen Vorschlag:
> Die "Eigen Library"

Die Eigen ist halt die wahrscheinlich verbreitetste Lineare-Algebra-
Bibliothek für C++. Es gibt davon sogar einen Branch für AVR-Arduinos,
der zeigt, dass die Bibliothek auf AVRs tatsächlich lauffähig ist.
Allerdings scheint das Prohekt eingeschlafen zu sein:

  https://github.com/vancegroup/EigenArduino

> und ich kann mir kaum vorstellen, dass dies wirklich die einzige
> Software dieser Art ist.

Du kannst dir auch noch die Armadillo-Bibliothek anschauen, die dir aber
vermutlich genauso wenig zusagen wird wie die Eigen:

  http://arma.sourceforge.net/


Markus schrieb:
> Dann investiere ich lieber einen halben Tag für die paar Funktionen
> die ich brauche und programmiere es selber.

Wenn du tatsächlich nur die paar von dir genannten Funktionen brauchst,
frage ich mich wirklich, warum du das nicht schon längst getan hast. Das
ist auf jeden Fall weniger Aufwand als

- erst hier im Forum nachzufragen,
- mit anderen herumzudiskutieren,
- (vielleicht) einen Kandidaten zu finden, der wenigstens halbwegs
  passend ist und
- diesen Kandidaten schließlich noch an die eigenen Bedürfnisse
  anzupassen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren