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 4 von 4   « Erste     234   
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)
 
Benutzerbild von Sir Rufo
Sir Rufo

 
Delphi 10 Seattle Enterprise
 
#31
  Alt 6. Apr 2013, 23:59
Der kurze Quelltextauszug lässt aber erahnen, welche Prügel du dafür einstecken musst(est)

Die kurzen Variablenamen finde ich dabei noch nicht mal schlecht, weil die Seiten eines Dreiecks nun mal mit a,b,c benamt werden.

Aber wir wollen das hier nicht fortsetzen.
Einmal Prügel ist mehr als ausreichend und ein schönes Programm ist es allemal

Und ein fertiges, funktionierendes Programm ist mehr wert als ein schöner, halbfertiger Quellcode
  Mit Zitat antworten Zitat
Mathematiker
 
#32
  Alt 7. Apr 2013, 08:37
Hallo,
... und ein schönes Programm ist es allemal
Danke für das Lob.
Der kurze Quelltextauszug lässt aber erahnen, welche Prügel du dafür einstecken musst(est)
Mein Problem ist, dass ich noch aus den Algol60/Basic/Turbo-Pascal-Zeiten komme. Ich versuche (manchmal ) mich ja umzustellen, aber irgendwie sehe ich noch keinen Nutzen, für mich persönlich. Zum Glück muss ich mein Geld nicht mit Programmiererei verdienen und bin auch nicht gezwungen im Team zu programmieren. Denn dann würde ich wohl verhungern.

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

 
Delphi 10.1 Berlin Starter
 
#33
  Alt 7. Apr 2013, 12:01
Diese "Prügel" ist nur ein Zeichen der Undankbarkeit und sozialer Minderintelligenz.

Denn jede altruistische Leistung in einem Forum (in gewisser Weise sogar ein Forum selbst) ist als Geschenk zu werten, dafür gibt es nichts als Dank und - soweit möglich - Gegenleistung. Wer also an Quelltexten, die seinem eigenen Geschmack nicht passen, nichts besseres findet, als daran herumzumäkeln, wird früher oder später keine solche mehr vorgesetzt bekommen - und andere müssen mit darunter leiden.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

 
Delphi 11 Alexandria
 
#34
  Alt 7. Apr 2013, 12:34
[OT]
... finde ich auch (ok, ich würde es anders formulieren).

Ich würde Klammern, Leerzeichen und Umbrüche anders setzen (dann wäre es aber nicht mehr so kompakt), aber sonst sehe ich da nichts schlimmes.
Außerdem habe ich mir angewöhnt, englische Bezeichner zu verwenden (SiteA usw.), obwohl ich dazu häufig erst wegen einer Übersetzung nachschlagen muss (und das Ergebnis sicher nicht immer optimal ist).

Inhaltlich habe ich das aber aus Zeitgründen nicht geprüft.
[/OT]

Geändert von stahli ( 7. Apr 2013 um 12:54 Uhr)
  Mit Zitat antworten Zitat
Bjoerk

 
Delphi 10.4 Sydney
 
#35
  Alt 7. Apr 2013, 12:52
Ich hab gesehen, du verwendest alleine in dieser Procedure 10 globale Variablen. Das dürfte auf die Dauer ziemlich unübersichtlich werden? Du könntest dir überlegen, diese eventuell wegzukapseln.

Delphi-Quellcode:
type
  TFloatPoint = record
    X, Y: double;
  end;

  TFloatPoints = array of TFloatPoint;

  TRekursivSoddy = record
  private
    Fra: double;
    Frb: double;
    Frc: double;
    FPan10: boolean;
    Fsxa: double;
    Fsxb: double;
    Fsxc: double;
    Fwxa: double;
    Fwxb: double;
    Fwxg: double;
    FCanvas: TCanvas;
    FPunkte: TFloatPoints;
    FResult: TStrings;
    function GetPunkte(I: integer): double;
    procedure SetPunkte(I: integer; const Value: double);
  public
    property Pan10: boolean read FPan10 write FPan10;
    property sxa: double read Fsxa write Fsxa;
    property sxb: double read Fsxb write Fsxb;
    property sxc: double read Fsxc write Fsxc;
    property wxa: double read Fwxa write Fwxa;
    property wxb: double read Fwxb write Fwxb;
    property wxg: double read Fwxg write Fwxg;
    property Canvas: TCanvas read FCanvas;
    property Result: TStrings read FResult;
    property Punkte[I: integer]: double read GetPunkte write SetPunkte;
    procedure CalcSoddy;
    procedure Apoll(ax, ay, ar, bx, by, br, cx, cy, cr: extended; tiefe: integer);
    procedure Clear;
  end;
Gruß
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

 
Delphi 10 Seattle Enterprise
 
#36
  Alt 7. Apr 2013, 13:21
@Bjoerk

Ich denke in dem anderen Forum wird er (hat er auch bestätigt) genug "Prügel" bekommen haben und warum er das so macht hat er auch erklärt.

Bei deinem Ansatz sehe ich aber eher eine Verschlimmbesserung, als eine sinnvolle und durchdachte Verbesserung.
Ein vernünftiger Ansatz wäre es die gesamte Berechnung völlig von der Darstellung zu lösen (und ja, die Verwendung von globalen Variablen sowieso zu eliminieren).

Ich würde aber vorschlagen den Quellcode in einem separaten Thread zu diskutieren und nicht hier, wo ja eigentlich nur das Programm vorgestellt wird/werden sollte.
  Mit Zitat antworten Zitat
Bjoerk

 
Delphi 10.4 Sydney
 
#37
  Alt 7. Apr 2013, 13:39
Sehe ich auch so. Das mit der Prügel in dem andern Forum hab ich übrigens nicht mitgekommen. War von meiner Seite auch nicht so gemeint. Und klar, wenn man das Prog schon überarbeitet, z. B. das Canvas hat da sicherlich nichts verloren.
  Mit Zitat antworten Zitat
Mathematiker
 
#38
  Alt 7. Apr 2013, 15:06
Hallo,
Danke an Bjoerk und Sir Rufo.
Ich habe mir Bjoerks Vorschlag angesehen und kann nur bewundernd feststellen, dass ich wenig verstehe.
Mir ist klar, dass so moderne, wegen mir auch, richtige Programmierung aussieht, aber lasst mir bitte meine "antiken Stil". Als Hobbyprogrammierer, dem es einfach nur Spaß macht, interessante Probleme dem Computer beizubringen, reicht es so noch.
Obwohl jeder Vergleich hinkt, denke ich: Ich mache mit einer Sense etwas Heu für meine Kaninchen, während Ihr mit computergesteuerten HiTech-Maschinen riesige Flächen in der gleichen Zeit bearbeitet.

Nebenbei. Die 10 Variablen sind nicht global, sondern lokal in einer Prozedur, welche die gezeigte und viele weitere enthält. Ja ja, ich weiß, das ist noch schlimmer.

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

 
Delphi 10.1 Berlin Starter
 
#39
  Alt 7. Apr 2013, 17:17
Ich würde aber vorschlagen den Quellcode in einem separaten Thread zu diskutieren und nicht hier, wo ja eigentlich nur das Programm vorgestellt wird/werden sollte.
Ja, mir gingen seit einigen Tagen auch derlei Grundsatzdinge durch den Kopf, deshalb eine neuerstellte Diskussion.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   

 

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 00:22 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