AGB  ·  Datenschutz  ·  Impressum  







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

Muss einen Kompass programmieren...

Ein Thema von volcano57 · begonnen am 18. Nov 2007 · letzter Beitrag vom 23. Nov 2007
 
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#26

Re: Muss einen Kompass programmieren...

  Alt 20. Nov 2007, 18:58
Mal nebenbei angemerkt, entspricht meiner Meinung deine Redensart weniger jemand aus der gymnasialen Oberstufe.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormPaint(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  MittelPunkt: TPoint;
  MausPunkt: TPoint;

implementation

uses math;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  ClientWidth:=600;
  ClientHeight:=600;

MittelPunkt.X := ClientWidth div 2;
MittelPunkt.Y := ClientHeight div 2;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  MausPunkt.X:=X;
  MausPunkt.Y:=Y;

Form1.Refresh;
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
//Zeichnen einer Ellipse mit dem Durchmesser 100px mit dem Mittelpunkt der Form als Mittelpunkt :)
Canvas.Ellipse(Mittelpunkt.X-50, Mittelpunkt.Y-50, Mittelpunkt.X+50, Mittelpunkt.Y+50);

Canvas.MoveTo(Mittelpunkt.X, Mittelpunkt.Y);
Canvas.LineTo(Mauspunkt.X, Mauspunkt.Y);
end;

end.
Jetzt musst du dir noch gedanken machen, wie du die eigentliche Koordinaten, wohin gezeichnet werden soll berechnen kannst.

Mit Canvas.LineTo(X, Y) zeichnest du zu den angegebenen Koordinaten eine Linie.

Du weißt mit Mauspunkt.X und Mauspunkt.Y wo sich die Maus gerade eben befindet.
Du kennst den Mittelpunkt mit seinen X und Y Koordinaten.

Wenn du dir dies mal aufzeichnest, dürftest du ein rechtwinkliges Dreieck erkennen, wo die Gerade zu dem Mauspunkt die Hypotenuse ist. Mit ArcCos(b / c) kannst du dir den Winkel berechnen.
Wobei b Ankathete und c Hypotenuse ist.

Dann weißt du ja, das bei einer Geraden der Anstieg m = tan(alpha) ist.

Sozusagen m = tan(arccos(b / c)); Viel Spaß noch beim tüfteln, im allg. hast du genug Denkanstöße und Quellcode erhalten um dich selber mal ans Werk zu machen und herauszufinden, wie es funktioniert.

Bisher habe ich ja nichtmal von dir einen mathematischen Anstoß gesehen, die Lösung selber herauszubekommen.

Grüße aus Dresden
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
 


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 15:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz