Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Rotation einer Linie

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 07.07.2008, 15:02    Titel: Rotation einer Linie Antworten mit Zitat

Hallöle.

Ich möchte gerne eine Linie, bzw 4 Punkte für ein Poligon Rotieren, habe jedoch irgend wie einen rechenfehler in mein, Source drin.


So soll das ganze aussehen.

Ich erstelle 2x ein 8Eck und möchte diese mit einem Poligon verbinden. Dazu muss ich jedoch je 2 Punkte der Poligonende so rotieren, das sie zum einen im im Achteck liegen, und zum anderen müssen sie jeweils gegenüber vom Mittelpunkt des jeweiligen 8 Eck's liegen. (Siehe Bild , die Roten Punkte)

Ihc versuche hier über den Satz des Pytagoras den entsprechenden Winkel heraus zu rechnen, um anschliessend mit der Sin und Cos Funktion die entsprechenden Punkte auszurechnen. Allerdings scheint es schon Probleme beim ausrechnen des Winkels zu geben.

Dabei soll es egal sein, auf welcher Seite der 2te Punkt sich befindet. Ob davor, dahinter, darüber oder unterhalb des ersten Punktes.

Die Aktuelle Funktion sieht so aus:
Code:
Sub F_I_ECAD_MakePolygon_Line(V_PosX1 as Double, V_PosY1 as Double, V_PosX2 as Double, V_PosY2 as Double, V_Width as Double, B_ArrayD() as GdkPoint)
Dim W2 as Double = V_Width / 2
Redim B_ArrayD(3) as GdkPoint

Dim XW as Double
Dim XH as Double
'Daten für Pythagoras vorbereiten
If V_PosX1 > V_PosX2 Then
   XW = V_PosX1 - V_PosX2
Else: XW = V_PosX2 - V_PosX1
End If
If V_PosY1 > V_PosY2 Then
   XH = V_PosY1 - V_PosY2
Else: XH = V_PosY2 - V_PosY1
End If
'Hypotenuse ausrechnen
Dim XHyp as Double = Sqr((XH ^ 2) + (XW ^ 2))
'Alpha-Winkel ausrechnen
Dim XAlpha as Double = XH / XHyp

'Sinus und Cosinus für die gegenüberliegenden Punkte auf dem 8Eck errechnen.
Print XAlpha & " - " & Sin(XAlpha)
B_ArrayD(0).X = CInt(V_PosX1 - (Sin(XAlpha) * V_Width))
B_ArrayD(0).Y = CInt(V_PosY1 - (Cos(XAlpha) * V_Width))

B_ArrayD(1).X = CInt(V_PosX1 + (Sin(XAlpha + 45) * V_Width))
B_ArrayD(1).Y = CInt(V_PosY1 + (Cos(XAlpha + 45) * V_Width))

'Andere Punkte erstmal egal.
B_ArrayD(2).X = CInt(V_PosX1 + 200)
B_ArrayD(2).Y = CInt(V_PosY1 - 200)
B_ArrayD(3).X = CInt(V_PosX1 + 100)
B_ArrayD(3).Y = CInt(V_PosY1 + 200)



Sieht jemand das Problem?


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 07.07.2008, 19:57    Titel: Antworten mit Zitat

äh stell dir einfach ne rotationsmatrix auf und multiplizier die koordinaten drüber? google mal so in die richtung affine lineare transformation oder sowas
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 07.07.2008, 20:27    Titel: Antworten mit Zitat

Ohne viel Kommentar:

http://beilagen.dreael.ch/QB/LIN_ROT.BAS

Sollte sich mehr oder weniger 1:1 nach FreeBasic übertragen lassen. Kommt übrigens ohne trigonometrische Funktionen aus.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 07.07.2008, 20:49    Titel: Antworten mit Zitat

@dreael Wunderbar .. Funzt einwandfrei! ... VIELEN DANK!


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz