Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

18.04.2011, 07:24

Strecke parallel verschieben

Hi,

ich habe eine Strecke x1,y1 - x2,y2 welche ich exakt entlang einer darauf errichteten Senkrechten um eine bestimmte Entfernung parallel verschieben möchte. Da die Strecke irgend wie (d.h. auch gedreht) im Koordinatensystem liegen kann, geht das nicht mit simplen Offsets auf die Koordinaten. Nur wie mache ich das dann möglichst genau und vor allem rechenzeitsparend?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

18.04.2011, 08:12

Hö? Wenn Du eine Senkrechte hast, dann brauchst Du die doch nur auf die Punkte Deiner Strecke addieren. Oder wo genau liegt jetzt Dein Problem?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

3

18.04.2011, 08:19

du hast (x1,y1) und (x2,y2) gegeben. dann verschiebst du, in dem du deine strecke um 90° drehst. dazu musst du einfach den vektor dafür ausrechnen (x2-x1 und y2-y1) und dann beide komponenten vertauschen und irgendwo ein minus davorsetzen (mathematisch korrekt ausgedrückt: mit -1 multiplizieren) beispiel:

start: (10,5), ende (15, 8 );
differenzvektor: (15 - 10, 8 - 5) => (5, 3)
komponenten vertauschen und ein minus bei x oder y einfügen (ich nehme y): (3, -5)

schon hast du die strecke senkrecht zu deiner originalen. wenn du jetzt einen bestimmten wert dazuaddieren willst, musst du diesen vektor (hier (3, -5)) normalisieren und dann einfach start + norm(3, -5) * länge und ende + norm(3, -5) * länge addieren. fertig :)

4

18.04.2011, 09:12

Äh nein, ich suche nicht die Senkrechte sondern will entlang der Senkrechten verschieben. Also eine Parallelverschiebung, bei der das Ergebnis nicht nur irgendwo liegt und dabei parallel zur Ursprungsstrecke ist, sondern bei dem die sich ergebenden Anfangs- und Endkoordinaten der Strecke auf dieser Senkrechten liegen.

5

18.04.2011, 09:26

Les nochmal was TrommlBomml geschrieben hat, das passt schon.
Im ersten Schritt berechnest du die Senkrechte, im zweiten verschiebst du Start und Endpunkt entlang der Senkrechten indem du sie einfach addierst.
Lieber dumm fragen, als dumm bleiben!

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

18.04.2011, 09:53

Sagte ich ja auch schon. Aber irgendwas scheint ihm an der einfachen Addition nicht zu passen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

7

18.04.2011, 10:49

Um entlang der Senkrechten zu laufen brauchst du diese aber auch erstmal.
Das ist schon korrekt so ...

Werbeanzeige