Entwickler-Ecke
Sonstiges (Delphi) - Trapez zeichnen
WormHole - Mo 06.06.05 21:20
Titel: Trapez zeichnen
Hallo, da bin ich wieder. Diesmal soll es ein Trapez werden! Ich komme einfach nicht mehr weiter...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| procedure TForm5.Button1Click(Sender: TObject);
var a, b, c, d, cm, Winkelbeta, Winkelalpha: extended; P: array [1..4] of TPoint;
begin paintbox1.canvas.FillRect(clientrect); cm := 72 / 2.54; a := StrtoInt(Edit1.Text); b := StrtoInt(Edit2.Text); c := StrtoInt(Edit3.Text); d := StrtoInt(Edit4.Text); Winkelalpha := StrtoInt(Edit5.Text); Winkelbeta := StrtoInt(Edit6.Text);
P[1].X := 100; P[1].Y := 100;
P[2].X := Round(100+a*cm); P[2].Y := 100;
P[3].X := Round(100+b*cm*cos(Winkelbeta*pi/180)); P[3].Y := Round(100+b*cm*sin(Winkelbeta*pi/180));
P[4].X := Round(100+d*cm*cos(Winkelalpha*pi/180)); P[4].Y := Round(100+d*cm*sin(Winkelalpha*pi/180));
Paintbox1.Canvas.Polygon([P[1],P[2],P[4],P[3]]); |
Das hier ist mein Ansatz! Das passt aber total nicht. Bitte helft mir, danke!
greetz WormHole
Moderiert von
raziel: Code- durch Delphi-Tags ersetzt.
delfiphan - Mo 06.06.05 21:32
Mich nimmt es mal wunder, was du genau machen willst. Nur schon bei der Definition von kongruenten Dreiecken gibt es viele verschiedene Möglichkeiten:
z.B. 3 Seiten, oder zwei Seiten und einen Winkel, eine Seite und zwei Winkel, usw..
Beim Trapez ist es noch komplizierter: Dort kannst du z.B. alle vier Seiten plus eine Diagonale angeben, aber auch dann ist die Sache noch nicht eindeutig. Ein Trapez ist nichts anderes als zwei zusammengeklebte Dreiecke.
Es gibt nicht einfach eine Art, um ein Trapez zu definieren. Deswegen frag ich dich, wofür du es brauchst, und welche Werte vorgegeben sind.
WormHole - Mo 06.06.05 21:38
Also, man hat die Vier Seiten und einen Winkel!
a= 3
b= 4
c= 2
d= 3
alpha= 50°
Aus dem Code, kann man dann natürlich den Beta Winkel löschen... Also war ich mit meinem "Ansatz" schon wieder total falsch ;)
Achja, ich brauche es eigentlich nirgendwo für, doch würde es meine mathelehrerin sicher freuen^^
MarkusZi - Di 07.06.05 19:50
Also: per Definition sind bei einem Trapez ja 2 Seiten parallel. So wie ich deinen sourcecode interpretiere hast du deine Seiten beginnend mit der Basis im Uhrzeigersinn nummeriert.
Daher wären bei dir z.B. die Seiten a und c parallel und der Winkelalpha wäre zwischen a und b.... richtig?
Dann müsstest du folgendes in deinem Programm ändern
Quelltext
1: 2: 3: 4: 5:
| P[3].X := Round(100+b*cm*cos(Winkelalpha*pi/180)); P[3].Y := Round(100-b*cm*sin(Winkelalpha*pi/180));
P[4].X := P[3].X + Round(c*cm); P[4].Y := P[3].Y; |
Dabei ist zu beachten, dass eine Paintbox ihren Ursprung oben links hat, im karthesischen Koordinatensystem liegt er jedoch links unten, also P[3].Y := Round(100
-b*.....
Bei mir passt das dann.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!