AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein In einander drehende Rechtecke bzw. Quadrate
Thema durchsuchen
Ansicht
Themen-Optionen

In einander drehende Rechtecke bzw. Quadrate

Ein Thema von daniel8520 · begonnen am 6. Sep 2005 · letzter Beitrag vom 6. Sep 2005
Antwort Antwort
daniel8520
(Gast)

n/a Beiträge
 
#1

In einander drehende Rechtecke bzw. Quadrate

  Alt 6. Sep 2005, 17:07
Hallo Leute,

ich verzweifel grad an meinen Info-Hausaufgaben! Allerdings nicht von der Informatik her, sondern eher von seiten der Mathematik

Wie der Titel schon sagt, sollen wir Rechtecke in einer PaintBox produzieren, wobei das erste die Ränder der PaintBox darstellt. Die obere linke Ecke des 2. Rechtecks bzw. Quadrats, ist dann um bspw. 10 px in positiver Y-Richtung verschoben. Die untere linke Ecke des 2. Rechtecks liegt auf der unteren Seite des ersten Rechtecks, aber um n=10 px in X-Richtung verschoben.....usw.
(Falls ihr mich nicht versteht, muss ich nen pic posten)

Mein Problem liegt, wie ihr euch denken könnt, an der Berechnung der Eckpunkte. Ich hab keinen Ansatz. Falls hier irgendwelche Schlagwörter für mich habt, wäre ich euch sehr dankbar!


Danke im Vorraus!
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

Re: In einander drehende Rechtecke bzw. Quadrate

  Alt 6. Sep 2005, 17:41
Wo ist denn das Problem. Du schreibst die Ecke liegt um 10 Pixel in positiver y-Rictung verschoben... Also hat die neue Ecke E1neu die Koordinaten E1alt(x,y+10).. usw. Aus den 4 Ecken zeichnest du dein Rechteck und fertig.
  Mit Zitat antworten Zitat
daniel8520
(Gast)

n/a Beiträge
 
#3

Re: In einander drehende Rechtecke bzw. Quadrate

  Alt 6. Sep 2005, 17:45
Mein Fehler!
Ich hätte dazu sagen sollen, dass es nicht nur 2 Rechtecke sein sollen, sondern mehrere (so viele, wie halt rein passen).
Das erste (was den Rand darstellt), ist genau wie das 2. kein Problem, aber die folgenden.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#4

Re: In einander drehende Rechtecke bzw. Quadrate

  Alt 6. Sep 2005, 20:01
willst du sie denn ineinander verschachteln?

wenn ja, dann geht das so(das würde dir aber nur ein rechteck mit linien darin bringen):

Delphi-Quellcode:
//rect = TRect mit standardwerten
//thisrect = TRect;
//paintbox = TPaintBox;
//offset = integer mit abstand der rechtecke
rect.left := 0;
rect.right:=paintbox.width;
rect.bottom:=paintbox.hight;
rect.top:=0;

for i:= 0 to (paintbox.height div rect.height) //so oft wird gezeichnet.
begin
 thisrect.left:=rect.left;
 thisrect.right:=rect.right;
 thisrect.top:=rect.top + offset;
 thisrect.bottom:= thisrect.top + rect.height;

 paintbox.rectangle(thisrect);
end;
könnte sein, dass ich damit ein rechteck zu viel oder eins zu wenig zeichne
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
daniel8520
(Gast)

n/a Beiträge
 
#5

Re: In einander drehende Rechtecke bzw. Quadrate

  Alt 6. Sep 2005, 20:41
Leider passiert bei deinem Quelltext gar nichts! Ich hab versucht alle Fehler raus zu basteln, aber das Problem ist, das ein TRect nicht die Eigenschaft Height besitzt!
  Mit Zitat antworten Zitat
marabu

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

Re: In einander drehende Rechtecke bzw. Quadrate

  Alt 6. Sep 2005, 20:42
Hi Daniel,

versuche dich mal an deinen letzten Kampf mit der Vektorrechnung zu erinnern. Du nimmst einfach dein Ausgangsrechteck ABCD mit der Seite a = AB und der Seite b = BC. A' erhältst du durch das Ansetzen eines Vektors v in A mit der Länge |v| = 10 (pixel als Einheit in deinem Koordinatensystem) und der Richtung a --> B. Nach diesem initialen Schritt kannst du B' durch Vektoraddition u = n*v + w erhalten, wobei |n*v| die Länge a ist und der Vektor w die Länge von v hat, aber seine Richtung um 90 Grad Celsius von v abweicht.

|u| kannst du dann ins Verhältnis setzen zur Länge von Seite a und durch Dreisatzrechnung erhätst du die Länge des Vektors u', der dir dann Punkt C' liefert. Dann drehst du u' um weitere 90 Grad und mit der Länge von u und der neuen Richtung stösst du auf Punkt D' - fertig.

Jetzt beginnt das Spiel von neuem nach gleichem Muster. Vergiss nicht ein Endekriterium festzulegen, |u| > 10 könnte sinnvoll sein.

Viel Spaß bei den Hausaufgaben wünscht dir der marabu
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#7

Re: In einander drehende Rechtecke bzw. Quadrate

  Alt 6. Sep 2005, 20:56
ja, du hast recht, man sollte da einen konstanten wert wert einfügen...

Aber ich seh die topicüberschrift jetzt erst....

es geht ja ums drehen. Da wirst du wohl versuchen müssen, marabus Post zu verstehen.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#8

Re: In einander drehende Rechtecke bzw. Quadrate

  Alt 6. Sep 2005, 21:15
Zitat von daniel8520:
das ein TRect nicht die Eigenschaft Height besitzt!
Es besitzt aber die Eigenschaften Top, Bottom, Left und Right.
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:51 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