AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Rechteck drehen?

Ein Thema von Flare · begonnen am 5. Apr 2006 · letzter Beitrag vom 6. Apr 2006
Antwort Antwort
Seite 1 von 2  1 2      
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#1

Rechteck drehen?

  Alt 5. Apr 2006, 20:23
Hey ho!

Ich habe hier desen Quelltext:
Delphi-Quellcode:
procedure drawrect(p1,p2,p3,p4: TPoint);
begin
  Form.Canvas.MoveTo(p1.X, p1.Y);
  Form.Canvas.LineTo(p2.X, p2.Y);
  Form.Canvas.LineTo(p3.X, p3.Y);
  Form.Canvas.LineTo(p4.X, p4.Y);
  Form.Canvas.LineTo(p1.X, p1.Y);
end;

procedure draw();
var p1,p2,p3,p4: TPoint;
begin
  p1.X := round(position.X + 10*cos(2*Pi/360*-(winkel+45)));
  p1.Y := round(position.Y + 20*sin(2*Pi/360*-(winkel+45)));
  p2.X := round(position.X + 10*cos(2*Pi/360*-(winkel+90+45)));
  p2.Y := round(position.Y + 20*sin(2*Pi/360*-(winkel+90+45)));
  p3.X := round(position.X + 10*cos(2*Pi/360*-(winkel+180+45)));
  p3.Y := round(position.Y + 20*sin(2*Pi/360*-(winkel+180+45)));
  p4.X := round(position.X + 10*cos(2*Pi/360*-(winkel+270+45)));
  p4.Y := round(position.Y + 20*sin(2*Pi/360*-(winkel+270+45)));
  drawrect(p1,p2,p3,p4);
end;
und möchte damit ein Rechteck gedreht darstellen lassen. Nur irgendwie macht der das nicht ganz so wie ich möchte.
Über Canvas.Rectangle geht es nicht, da die Seiten ja schräg sein sollen, was dort ja nicht geht.
Kennt jemand eine Lösung für diese (scheinbar einfache aber für mich doch schwere) Drehung?


Flare
Willy Scheibel
  Mit Zitat antworten Zitat
Benutzerbild von netscanner
netscanner

Registriert seit: 2. Dez 2005
Ort: Dieburg
280 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: Rechteck drehen?

  Alt 5. Apr 2006, 21:01
welche drehung meinst du denn?
also dass es so liegt: <> ???

das kann man über polyline machen...
schau dazu einfach mal in der delphi hilfe nach
Martin
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Rechteck drehen?

  Alt 5. Apr 2006, 21:03
Hallo Willy,

vielleicht kannst du dir hier ein paar Anregungen holen: klick.

Grüße vom marabu
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#4

Re: Rechteck drehen?

  Alt 5. Apr 2006, 21:22
Also ich habe mir mal den Programmiertext mit dem Flugzeug angeschaut, verwenden möchte ich ihn nicht, weil ich dazu zu viel umändern müsste aber ich schau mal wie ich die einzelnen Funktionen verwenden kann.
Danke erstmal!


Flare

//Edit: Ich kriege es nicht hin, probiere aber erst morgen weiter.
Ich suche immer noch nach einem Code der mir ein rechteck mit bekannten Ausgangskoordinaten in einem bestimmen Winkel dreht, hat noch jemand Vorschläge für mich?
Willy Scheibel
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Rechteck drehen?

  Alt 5. Apr 2006, 22:15
Hallo Willy,

hier ein wenig Code, der meine Hinweise aus dem verlinkten Beitrag umsetzt. Der Code ist für ein Dreieck, aber die Anpassung an ein Viereck sollte dich nicht vor unüberwindliche Schwierigkeiten stellen.

marabu
Angehängte Dateien
Dateityp: zip rotate_665.zip (1,8 KB, 53x aufgerufen)
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#6

Re: Rechteck drehen?

  Alt 5. Apr 2006, 22:30
Ich habe es jetzt soweit umgebaut, dass es in mein Projekt reinpasst, er möchte aber das TXForms nicht annehmen...
Zitat:
[Error] Roboter.pas(21): Undeclared identifier: 'TXForm'
Und er erkennt auch die Konstanten nicht, wobei ich aber glaube dass es an dieser TXForm liegt.
Was muss ich einbinden oder sonstewas machen damit das geht?


Flare
Willy Scheibel
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Rechteck drehen?

  Alt 6. Apr 2006, 06:54
Guten Morgen.

Vielleicht hilft es, wenn du die Unit Windows einbindest?

marabu
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#8

Re: Rechteck drehen?

  Alt 6. Apr 2006, 07:31
Stimmt, hilft ^^

Irgendwie hat da meine Delphi-HIlfe gehangen, weil überprüft habe ich es ja...
Das sieht ja jetzt an sich schon schön aus, nur dreht der Sich um einen imaginären Punkt, der irgendwo liegt, der aber eigentlich auf dem Bild in der Mitte liegen soll.
Ich konnte aber nicht erkennen, wo der Mittelpunkt der Drehung eingestellt wird.
Kann es sein, dass ich es danach noch über xf verschieben muss?

Flare
Willy Scheibel
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Rechteck drehen?

  Alt 6. Apr 2006, 07:49
Matrix-Operationen werden einfach hintereinander geschaltet (siehe Online-Hilfe). In deinem Fall wird zuerst eine Translation des Angelpunktes in den Ursprung des Koordinatensystems durchgeführt, anschließend wird das Rechteck rotiert und dann wird die Translation wieder rückgängig gemacht. Das ganze geschieht eigentlich mit einer einzigen Matrix, die entsprechend vorbereitet wird.

marabu
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#10

Re: Rechteck drehen?

  Alt 6. Apr 2006, 17:21
Nochmals vielen Dank an alle, ich habe jetzt versucht meine Version durchzubringen, ich wollte es unbedingt mit Trigonometrie hinbekommen.
Hier nochmal mein Code:
Delphi-Quellcode:
procedure TRoboter.draw();
var points: array[0..4] of TPoint;
    deg: array[0..4] of Single;
    h,b: single;
    i: integer;
begin
  h := 20;
  b := 10;
  deg[0] := 180 - winkel + arctan(h/b)/Pi*180;
  deg[1] := 180 - winkel + 180 - arctan(h/b)/Pi*180;
  deg[2] := 180 - winkel - 180 + arctan(h/b)/Pi*180;
  deg[3] := 180 - winkel - arctan(h/b)/Pi*180;
  deg[4] := deg[0];
  for i:=0 to 4 do
  begin
    points[i] := Point(round(position.X+b*cos(deg[i]*2*Pi/360)),round(position.Y+h*sin(deg[i]*2*Pi/360)));
  end;
  FForm.Canvas.Polyline(points);
  inherited;
end;
Für diese Überlegung habe ich heute ganze 2 Reli-Stunden gesessen


Flare

//Edit: Mir fällt gerade auf, dass das nur hinhaut wenn Höhe und Breite des Rechtecks gleich sind (Quadrat), da scheint also was mit dem Faktor nicht zu stimmen.
Willy Scheibel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz