Form so skalieren, dass sie nicht mit ihrer Originalform überlappt

Erste Frage Aufrufe: 506     Aktiv: 25.09.2020 um 08:56

0

Hallo,

wie kann man eine Form so skalieren, dass sie nicht mit ihrer Originalform überlappt?

Ich erstelle gerade eine kleine Software, mit der man Linien erstellen und verbinden kann, sodass sich daraus freie Formen ergeben. Durch einen Klick auf eine Form kann man daraus ein 3D-Modell erstellen, z wird mithilfe der Kreis-Funktion berechnet, x und y bewegen sich in kleinen Schritten auf den Mittelpunkt der Form zu. Am Ende werden die Punkte mit dem jeweiligen Mittelpunkt der Vorder- bzw. Rückseite verbunden. Mein Algorithmus funktioniert einwandfrei bei konvexen Formen wie Kreisen. Aber bei konkaven Formen liefert er ein unschönes Ergebnis. Wenn man die inneren Punkte des 3D-Modells auch als Form betrachten würde, dann würde man sagen, dass diese mit ihrer Originalform überlappen. Wie kann man das verhindern? Liege ich richtig in der Annahme, dass das Ganze etwas mit Differentialgleichungen und der Zeta-Funktion zu tun hat?

Und ich habe noch ein Problem: Selbst, wenn ich es schaffe, dass sich die Punkte an die äußere Form anpassen, fehlt mir immer noch eine Dimension, um die Punkte überlappungsfrei miteinander zu verbinden. Das Ganze sollte am Ende etwa so aussehen (grobe Skizze):

Wie mache ich das?

 

lg

 

RLe

Diese Frage melden
gefragt

Punkte: 10

 

Hmm, vielleicht ist das eher ne Informatikfrage, versuch dein Glück mal in unserem Zweitforum
www.informatik-fragen.de
  ─   feynman 25.09.2020 um 06:29

Mit der programmiertechnischen Umsetzung habe ich keine Probleme. Aber dazu fehlt mir diese eine Linie, die von dem Schwanz der Form bis zum Kopf geht. Und außerdem hätte ich auch ganz gerne ein paar innere Formen. Problem: Ich kann mit meinem Programm, dass ich entwickelt habe, ganz unterschiedliche Formen erstellen, und das hier war nur ein Beispiel. Das Programm muss diese Linie ermitteln, und das ist eben mein Problem. Was es bisher kann, ist Dreiecke und konvexe Formen in 3D umwandeln, das Ganze sieht dann im Wireframe-Mode, wenn man sich die einzelnen Faces anschaut, bsw. so aus: https://www.bilder-upload.eu/bild-e6d140-1601013699.png.html
Aber sobald ich eine konkave Form mache, und versuche, diese in 3D umzuwandeln, kommt bsw. sowas dabei raus:
https://www.bilder-upload.eu/bild-f935a6-1601014048.png.html
Weil einfach die Verbindungslinien zwischen einzelnen Punkten mit der Form überlappen. Deswegen muss ich wissen, wie die Form ohne Überlappung skalieren kann. Aber einen Algorithmus zu schreiben, der das erkennt, wäre vielleicht zu aufwendig. Und vor allem, damit nicht am Ende ein Loch übrig bleibt, brauche ich Linien wie die bei der Form oben. Leider finde ich dazu nichts oder kenne vielleicht die richtigen Suchbegriffe nicht.
  ─   rle 25.09.2020 um 08:16

Was mein Programm an den Formen die ich erstelle erkennen kann:

- das Programm kann die größten und kleinsten x- bzw. y-Werte einer Form ermitteln und daraus den Mittelpunkt bestimmen, mit dem ich bereits arbeite
- das Programm kann durch Aufsummieren der Entfernungen der einzelnen Punkte zueinander den der Form Umfang ermitteln
- das Programm könnte alle Steigungen und die jeweiligen Winkel zum Mittelpunkt auflisten, falls es sich als nötig erweisen sollte

Aber was nützt mir das? Meine erste Idee war, zwei Koordinatesysteme zu erstellen, jeweils eines mit der x- bzw. y-Achse als vertikale Achse und der einer Längen-Achse von 0 bis zum Umfang der Form. Dort könnte ich dann alle Punkte der Punkteliste einzeichnen. Aber irgendwie bringt mich das auch nicht weiter.
  ─   rle 25.09.2020 um 08:56
Kommentar schreiben
0 Antworten