Forum: PC-Programmierung 2D Linien-Zug mit Contraints belegen?


von cppbert (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe offene oder geschlossene 2D Linien-Züge die aus Lines und Arcs 
bestehen - diese möchten ich mit Constraints versehen um z.B. 
Linien-Längen Variable, Winkel fest oder in Ranges verändern zu können, 
also eine gewisse Form von flexibler Starrheit :) - der Linie-Zug + die 
varianten Parameter ergeben dann einen konkreten Linien-Zug

Linie und Constrains als solche zu definieren und das ganze zu zeichnen 
macht mir keine Probleme - ich hab nur keinen Ahnung wie man so ein 
"eingeschränktes" System berechnen oder erkennt das es nicht gelöst 
werden
kann, oder multiple Lösungen gibt

Im Anhang habe ich z.B. aus 4 Linien ein Quader gebaut, die Winkel 
müssen 90 Grad bleiben und eine meiner Linien hat einen fixen 
X-Startpunkt, jetzt könnte ich a im dem angegebenen Range verändern - 
wann verschiebt sich der Quader oder wann kann er z.B. nur um "einen" 
Mittelpunkt expandieren, es gibt tausend Sachen zu bedenken

Kenn jemand ein Tool, Library(C,C++,C#,Java,Win/Linux,egal) mit dem man 
solche Ideen durchspielen kann um mal eine genauere Vorstellung zu 
bekommen wie so was aussieht und vielleicht auch wie man das berechnen 
können

Ich glaube die Tools auf den Screenshots machen was vergleichbares:
http://solvespace.com/constraints.pl
https://forum.freecadweb.org/viewtopic.php?t=2354

von Sven P. (Gast)


Lesenswert?

Üblicherweise tun das die Skizzierer in CAD-Programmen, also Fusion360 
oder sowas.

Alternativ könntest du dir mal Geogebra anschauen.

von cppbert (Gast)


Lesenswert?

Sven P. schrieb:
> Üblicherweise tun das die Skizzierer in CAD-Programmen, also
> Fusion360
> oder sowas.
>
> Alternativ könntest du dir mal Geogebra anschauen.

Es geht mir darum so etwas selber zu programmieren, ich brauche auch 
keinen Editor oder sowas ist nur für interne Berechnungen und auch nur 
in 2D

von Johannes S. (Gast)


Lesenswert?

Vektorrechnung, Matrizenmathematik,... sorry, zu lange her für einen 
alten Informatiker :) Aber Vektorrechnung ist der Weg den man da gehen 
muss, und dafür dürfte es reichlich viele Bibliotheken geben.

von Theor (Gast)


Lesenswert?


von sid (Gast)


Lesenswert?

cppbert schrieb:
> Linie und Constrains als solche zu definieren und das ganze zu zeichnen
> macht mir keine Probleme - ich hab nur keinen Ahnung wie man so ein
> "eingeschränktes" System berechnen oder erkennt das es nicht gelöst
> werden
> kann, oder multiple Lösungen gibt

Naja, das ist eine Frage der einfachen Mathematik,
gewöhnlicherweise kann man auch nicht alles mit Constraints belegen um 
eben
eine "unmachbarkeit" zu verhindern
(eine Linienlänge und ein Winkel bleiben undefiniert zB)

Nun zur einfachen Mathematik:
jede komplexe Form lässt sich in weniger Komplexe (virteulle) Dreiecke 
zerlegen.
Innenwinkel eines jeden Dreiecks sind IMMER ausnahmslos 180°
So kann man aus der Lage der Dreieecke den Gesamtinnenwinkel einer jeden 
Form bestimmen.

Längen sind nur wenig komplexer;
gewöhnlicherweise nimmt man einen Startpunkt X und geht im 
Uhrezeigersinn um die Form,
jeder Schrittlänge nach rechts muss mit einer Schrittlänge nach links 
ausgeglichen werden, und jede Schrittlänge nach oben mit einer nach 
unten
damit die Form geschlossen bleibt.
Diagonalen haben eine X und eine Y komponente in die Du zerlegen kannst.
Bögen werden über ihre Sehnen addiert
und so hat man eine einfache Vektorgleichung die am Ende Null ergeben 
muss.

Hast Du nun einige Unbekannte in der Gleichung kannst Du nach diesen 
Umstellen und erhälst eine bestimmte Anzahl an möglichen Werten
damit kennst Du die Anzahl und sogar die Werte der Möglichkeiten

'sid

von Egon D. (Gast)


Lesenswert?

cppbert schrieb:

> Linie und Constrains als solche zu definieren und das
> ganze zu zeichnen macht mir keine Probleme - ich hab
> nur keinen Ahnung wie man so ein "eingeschränktes"
> System berechnen oder erkennt das es nicht gelöst werden
> kann, oder multiple Lösungen gibt

Das ist ein großes Thema, denn ganz ähnliche Fragestellungen
sind der Urgrund der Algebra.

Strecken und Kreisbögen lassen sich durch charakteristische
Punkte beschreiben; aus Paaren, Tripeln oder Quadrupeln von
gegebenen Punkten lassen sich durch Grundoperationen neue
Punkte gewinnen. Sicherlich lassen sich auch parametrische
Sachen beschreiben. Man kann auch Polynome verwenden
(Splines, Bezier-Kurven).

Du müsstest Dich mal schrittweise festlegen, wie Deine
Grundelemente aussehen sollen und welche Operationen
erlaubt sein sollen -- dann kann man bei genügend
mathematischem Geschick untersuchen, ob das System
widerspruchsfrei ist, welche Lösungen es geben kann
und wie man die berechnet.

von Sebastian (Gast)


Lesenswert?

Such mal nach "sketchpad the mother of all demos" - das war die erste 
Software, die das konnte.

In library-Form gibt es auch noch OpenCasCADe.

von cppbert (Gast)


Lesenswert?

danke für die Tips & Links

ich kompiliere gerade: http://solvespace.com
mal schauen ob ich davon nicht gleich die lib verwenden kann - bestimmt
ein wenig zu umfangreich aber als Einstieg zum spielen bestimmt 
brauchbar

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.