AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Darstellungen und Berechnungen am Dreieck
Thema durchsuchen
Ansicht
Themen-Optionen

Darstellungen und Berechnungen am Dreieck

Ein Thema von Mathematiker · begonnen am 6. Apr 2013 · letzter Beitrag vom 7. Apr 2013
Antwort Antwort
Seite 3 von 4     123 4      
Mathematiker
Hallo,
dieses Programm ist eines der komplexesten, die ich bisher geschrieben habe. Es untersucht (Darstellung und Berechnung) verschiedene Punkte, Geraden, Kreise, ..., die man an einem Dreieck betrachten kann.
Gerade in den letzten Jahren ist das scheinbar "vollständig" untersuchte Dreieck wieder zum Forschungsthema geworden. Unter http://faculty.evansville.edu/ck6/encyclopedia/ETC.html werden von Clark Kimberling alte und neue Beziehungen am Dreieck gesammelt.

Die zu zeichnenden Punkte, Geraden und Kreise wählt man in den rechten Listen aus. Eine Vielzahl von Einstellungsmöglichkeiten (Größe, Gitter, Achsen, ...) sowie verschiedene Weiterverarbeitungsmöglichkeiten (Druck, Speichern, Kopieren) sind vorhanden.
Über eine Animation (Schalter, F2) können die drei Eckpunkte entweder waagerecht oder senkrecht kontinuierlich verschoben werden.
Die zu zeichnenden Stücke werden auch berechnet. In einer Liste werden die Koordinaten der Punkte, Längen von Strecken und Gleichungen von Geraden, verschiedene Werte von Kreisen, ... angezeigt.

Aufgrund der großen Anzahl darstellbarer Objekte ist deren Auswahl nicht ganz so einfach. Aus diesem Grund sind unter dem Menüpunkt Themen einige besondere Beziehungen am Dreieck vordefiniert.

Ansonsten kann ich nur sagen, dass es eine Menge Arbeit war, die vorhandenen Objekte am Dreieck hinzubekommen.
Ihr könnt ja einmal Strg + F12 drücken. Dann werden alle Punkte, Geraden, Kreise, Kegelschnitte ... angezeigt. Wer dann eine Animation laufen lässt, will seinen Computer quälen. Strg + F12 schaltet auch wieder zurück.

Viel Spaß beim Testen. Hinweise auf Fehler sind, wie immer, gern willkommen.
Hinweis: Auch in der Entwickler-Ecke habe ich das Programm vorgestellt.

Beste Grüße
Mathematiker

Nachtrag: In einem Anflug von Wahnsinn habe ich das falsche Programm angehängt. Jetzt ist es richtig.
Rev 1: erste Änderungen durchgeführt, u.a. einen Splitter eingefügt, einen Schalter für schnelles Entfernen der Markierungen und kleinere Fehler behoben
Rev 2: Fenstergröße ist beliebig veränderbar. Die Punkte können in der Simulation auch um den Ursprung gedreht werden. Geschwindigkeit der Simulation ist regelbar.
Miniaturansicht angehängter Grafiken
dreieck.png  
Angehängte Dateien
Dateityp: zip Pdreieck2.zip (445,2 KB, 74x aufgerufen)

Geändert von Mathematiker ( 6. Apr 2013 um 17:55 Uhr)
 
jobo

 
Delphi 2010 Enterprise
 
#21
  Alt 6. Apr 2013, 14:22
Noch ein paar Anmerkungen:
- Wieso ist die Fenstergröße fix?
- Nach welchen Kriterien werden die Berechnungsformen sortiert?
Ich habe z.B. nach Rechte Winkel, Pythagoras, Quadrat, .. gesucht und letztlich eine F12-Modus gespeicherte Datei im Texteditor durchsucht, um immerhin "Seitenquadrate" zu finden. Im Programm muss man dann aber erneut durch die 3 (bzw. 4) Reiter stöbern, um "Seitenquadrate" zu finden. Du hast ja so viel Berechnungen implementiert, da würde vielleicht eine intelligente Kombobox mit Teilstringsuche ganz gut helfen.

Zur Animation
Animationssequenzen wären noch die Sahnehaube!
a) Zunächst wären Anfangs-/Endpunkte für ABC zu definieren,
b) dann (sofern machbar) noch Farbwechsel.
c) Angabe von aus-/einzublenden Berechnungen
d) Animationspause in ms

a),b),c),d) dann beliebig oft (mit anderen Werten natürlich), als Liste oder Zirkel (Liste vorwärts, rückwärts)

Ich bin kein Mathegenie, aber ich könnte mir vorstellen, dass man damit doch etwas Euklidische Geometrie veranschaulichen kann (mir oder den Schülern).

P.S.: Eine (automatische) Visualisierung rechter Winkel (Winkelbogen mit Punkt) wäre auch schön.
  Mit Zitat antworten Zitat
Mathematiker
 
#22
  Alt 6. Apr 2013, 17:59
Hallo jobo,
Danke für die vielen Hinweise. Ich werde in den nächsten Tagen versuchen, möglichst viel umzusetzen.
Wieso ist die Fenstergröße fix?
Ist in Revision 2 geändert.
Ebenso kann jetzt die Animationsgeschwindigkeit geregelt werden. Außerdem können die Dreieckspunkte jetzt auch um den Ursprung rotieren.
Wie schon gesagt, der Rest wird wahrscheinlich auch noch.

Beste Grüße
Mathematiker
  Mit Zitat antworten Zitat
Benutzerbild von blondervolker
blondervolker

 
Delphi XE2 Architect
 
#23
  Alt 6. Apr 2013, 18:44
Hallo,

kannst ja den Sourcecode mit reinstellen.
Das man was lernen kann...
www.bewerbungsmaker.de
  Mit Zitat antworten Zitat
Mathematiker
 
#24
  Alt 6. Apr 2013, 18:58
Hallo,
kannst ja den Sourcecode mit reinstellen.
Könnte ich, aber bei diesem Programm möchte ich es nicht.
Außerdem: In der EE habe ich für fast jeden meiner Quelltexte "Prügel" erhalten, da sie für andere nicht lesbar sind. Z.B. gibt's bei mir keinerlei Kommentare, schlecht strukturiert usw.
Bei anderen Programmen bin ich gern bereit, den Quelltext zu zeigen; bei den komplexeren nicht unbedingt.

Beste Grüße
Mathematiker
  Mit Zitat antworten Zitat
Delphi-Laie

 
Delphi 10.1 Berlin Starter
 
#25
  Alt 6. Apr 2013, 19:35
Ich vermied es, für Mathematiker bezüglich des Quelltextes zu reagieren, aber jetzt muß es heraus, nämlich daß das Bitten um den Quelltext aussichtslos ist, war mir von Anfang an sonnenklar - sonst hätte ihn Mathematiker schließlich von sich aus beigelegt.

Außerdem: In der EE habe ich für fast jeden meiner Quelltexte "Prügel" erhalten, da sie für andere nicht lesbar sind. Z.B. gibt's bei mir keinerlei Kommentare, schlecht strukturiert usw.
Mach Dir nichts draus, Mathematiker: In den Foren gibt es auch genug Leute, die persönlich werden und einen angreifen, obwohl man sie nicht angriff.
  Mit Zitat antworten Zitat
Horst_
 
#26
  Alt 6. Apr 2013, 19:39
Hallo,

Der Quellcode wäre sicher gut als Übung für:
'Was hat sich der Autor dabei gedacht?', denn Du neigst, dazu möglichst kurze Variablennamen zu nehmen.
Danke, dass Du uns für dieses Wochenende "verschonst".
Gleich zu Beginn, Adams-Kreis, kannte ich gar nicht. Also schalte ich mal was bekannses, die Umkreise hinzu und ei verbibscht der Schnittpunkt von denen war der Mittelpunkt dieses "Adams-Kreises". Ich fühlte mich wie ein blindes Huhn
Danke für diese Moment der Verblüffung.

Gruß Horst
  Mit Zitat antworten Zitat
borstenei
 
#27
  Alt 6. Apr 2013, 19:59
Stellst Du jetzt nach und nach alle Deine Programme rein?
Dann spar ich mir das Geld für das aktuelle "WinFunktion Mathematik Plus 20 "
  Mit Zitat antworten Zitat
Mathematiker
 
#28
  Alt 6. Apr 2013, 20:04
Hallo blondervolker,
damit Du nicht denkst, ich will mich vollkommen drücken, habe ich einmal einen Teil herauskopiert und mit kurzen Kommentaren versehen, den Teil zur Berechnung der rekursiven Soddy-Kreise:
Delphi-Quellcode:
//rekursive Soddykreise
procedure rekursivsoddy;
var a,b,c,ax,bx,cx,ra,rb,rc:real;
//apollonische kreise
procedure apoll(ax,ay,ar,bx,by,br,cx,cy,cr:extended;tiefe:integer);
var seitea,seiteb,seitec,
    alpha,beta,gamma,
    talpha,tbeta,tgamma,
    dx,dy,dr:extended;
    ddx,ddy,w5:real;
begin
    if tiefe>8 then exit;

    //Kreisradius berechnen
    w5:=(br*cr+ar*(br+cr)+2*sqrtx(ar*br*cr*(ar+br+cr)));
    if w5=0 then exit;
    dr:= ar*br*cr/w5;
    //Abstände der berührenden Kreise berechnen
    seitea:=sqrtx(sqr(bx-cx)+sqr(by-cy));
    seiteb:=sqrtx(sqr(ax-cx)+sqr(ay-cy));
    seitec:=sqrtx(sqr(bx-ax)+sqr(by-ay));

    if (seiteb*seitec*seitea<>0) then
    begin
      //Innenwinkel berechnen
      alpha:=(seitea*seitea-seiteb*seiteb-seitec*seitec)/(-2*seiteb*seitec);
      beta:=(seiteb*seiteb-seitea*seitea-seitec*seitec)/(-2*seitea*seitec);
      gamma:=(seitec*seitec-seiteb*seiteb-seitea*seitea)/(-2*seiteb*seitea);
      beta:=sqrtx((1+beta)/2);
      gamma:=sqrtx((1+gamma)/2);
      alpha:=sqrtx((1+alpha)/2);

      if alpha*beta*gamma<>0 then
      begin
        //Parameter der trilinearen Koordinaten ermitteln
        talpha:=1+beta*gamma/alpha;
        tbeta:=1+alpha*gamma/beta;
        tgamma:=1+alpha*beta/gamma;
        //trilineare Koordinaten des Kreismittelpunktes ermitteln
        trilinear(ax,ay,bx,by,cx,cy,talpha,tbeta,tgamma,ddx,ddy);
        dx:=ddx;
        dy:=ddy;
        xkreis(dx,dy,dr);
        //Ausgabe in Berechnungsliste
        if pan10 then
        begin
          lb1.items.add('Rekursiver Soddy-Kreis'#9'M ('+_strkomma((dx-pw2)/100,1,3)+
            '|'+_strkomma((-dy+ph2)/100,1,3)+'), r = '+_strkomma(dr/100,1,3));
        end;
        //rekursiver Aufruf weiterer Kreise
        if dr>1 then
        begin
          apoll(ax,ay,ar,bx,by,br,dx,dy,dr,tiefe+1);
          apoll(ax,ay,ar,cx,cy,cr,dx,dy,dr,tiefe+1);
          apoll(bx,by,br,cx,cy,cr,dx,dy,dr,tiefe+1);
        end;
      end;
    end;
end;
begin
    //Übergeben werden die Seitenlängen sxa, sxb, sxc
    //und die Innenwinkel wxa, wxb, wxg des Dreiecks
    if (sxa+sxb+sxc<>0) and (cos(wxa/2)*cos(wxb/2)*cos(wxg/2)<>0) then
    begin
      //1.Soddy-Kreisradien berechnen
      ra:=0.5*(-sxa+sxb+sxc);
      rb:=0.5*(sxa-sxb+sxc);
      rc:=0.5*(sxa+sxb-sxc);
      can.pen.color:=clnavy;
      //erster Apollonius-Kreis
      apoll(punkte[1].x,punkte[1].y,ra,
            punkte[2].x,punkte[2].y,rb,
            punkte[3].x,punkte[3].y,rc,1);
    end;
end;
Und so geht es knapp 12000 Zeilen weiter. Willst Du Dir das antun?

Beste Grüße
Mathematiker
  Mit Zitat antworten Zitat
Mathematiker
 
#29
  Alt 6. Apr 2013, 20:06
Hallo,
Stellst Du jetzt nach und nach alle Deine Programme rein?
Nein.
Dann spar ich mir das Geld für das aktuelle "WinFunktion Mathematik Plus 20 "
Kannst Du Dir sparen. siehe PN

Beste Grüße
Mathematiker
  Mit Zitat antworten Zitat
Benutzerbild von blondervolker
blondervolker

 
Delphi XE2 Architect
 
#30
  Alt 6. Apr 2013, 21:35
Nein!!! Das möchte ich mir wirklich nicht antun.

Übrigens war es als "Spass" gemeint.
Für tolle Programme würde ich meinen Code auch nicht rausrücken...

Da ich aber lernbereit bin,übe ich fleißig weiter...
www.bewerbungsmaker.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      

 

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 04:26 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