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
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#31

Re: Muss einen Kompass programmieren...

  Alt 20. Nov 2007, 19:48
Zitat von MCXSC:
Image1.Canvas.MoveTo(Image1.Width / 2, Image1.Height / 2);
Das wird nicht funktionieren. Ersetz mal die beiden / durch div.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
MCXSC
(Gast)

n/a Beiträge
 
#32

Re: Muss einen Kompass programmieren...

  Alt 20. Nov 2007, 19:51
Zitat von DeddyH:
Zitat von MCXSC:
Image1.Canvas.MoveTo(Image1.Width / 2, Image1.Height / 2);
Das wird nicht funktionieren. Ersetz mal die beiden / durch div.
Funktionieren tat es nicht... war kein Integerwert. Hab mal 2x Round(x) eingefügt, so wie der Code jetzte da steht klappt es.
  Mit Zitat antworten Zitat
quendolineDD

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

Re: Muss einen Kompass programmieren...

  Alt 20. Nov 2007, 19: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
Tommy1988
(Gast)

n/a Beiträge
 
#34

Re: Muss einen Kompass programmieren...

  Alt 20. Nov 2007, 20:13
Zitat:
also ich hab jetz informatik klasse 12 Grundkurs.. und komm voll nich mit delphi klar... Neutral
Eins verstehe ich nicht. Du kannst kein Delphi, es wird aber von Dir erwartet einen Kompass zu erstellen?

Dazu sage ich nur:
Hoffendlich bekommt dein Lehrer heraus, dass du dir fast den ganzen Code hier beorfgt hast und gibt dir ne 6.

Ich habe in diesem Forum, lediglich ein anderes Unterforum, mal gelesen, dass "wir hier keine Hausaufgaben machen"

Den Standpiunkt vertrete ich allemal!
  Mit Zitat antworten Zitat
MCXSC
(Gast)

n/a Beiträge
 
#35

Re: Muss einen Kompass programmieren...

  Alt 20. Nov 2007, 20:21
Zitat von Tommy1988:
Zitat:
also ich hab jetz informatik klasse 12 Grundkurs.. und komm voll nich mit delphi klar... Neutral
Eins verstehe ich nicht. Du kannst kein Delphi, es wird aber von Dir erwartet einen Kompass zu erstellen?

Dazu sage ich nur:
Hoffendlich bekommt dein Lehrer heraus, dass du dir fast den ganzen Code hier beorfgt hast und gibt dir ne 6.

Ich habe in diesem Forum, lediglich ein anderes Unterforum, mal gelesen, dass "wir hier keine Hausaufgaben machen"

Den Standpiunkt vertrete ich allemal!
Ich würde sagen, die Diskussion erübrigt sich... ~.~ Ich kenne keinen Lehrer, der direkt mal mit Delphi anfängt und dann einen Kompass programmieren lässt. Zumal IF12 Grundkurs... Da macht man eigentlich was anderes. Aber wie gesagt: Lassen wir das einfach mal so stehen.
  Mit Zitat antworten Zitat
volcano57

Registriert seit: 18. Nov 2007
18 Beiträge
 
#36

Re: Muss einen Kompass programmieren...

  Alt 21. Nov 2007, 15:45
hm ja ok... ich bin wirklich nicht so gut in info

aber vielen dank an alle hier auf dem forum

find ich gut dass ihr so helft!!
  Mit Zitat antworten Zitat
volcano57

Registriert seit: 18. Nov 2007
18 Beiträge
 
#37

Re: Muss einen Kompass programmieren...

  Alt 21. Nov 2007, 16:01
ja ihr sagt einfach soundo ich gebe keine eigenen denkasntöße ud so weiter...

oder ihr keine HA macht für schüler...

und das der lehrer mir hoffentlich ne 6 gibt...

also erstens habe ich das programm leider nich auf meinem pc.. ich kann nur in der schule einmal die woche ausprobieren, weil wir nicht jede stunde praktisch am pc arbeiten

jah weiterhin möcht ich sagen dass das keine HA ist, weil wir so richtige implementierungen und so nur in der schule machen, ha wäre z.B. wie man das berechnet, dass sich der zeiger immer zur maus dreht...

-> ich glaub mit dem strahlensatz müsste es gehen, muss ich mal nächste std. schauen...

und ich werd auch keine 6 dafür bekommen wenn ich das nicht machen kann, weil der lehrer weiß dass ich das nicht so gut kann...

ich bin nämlich seid diesem schuljahr neu auf der schule.. klar ich hab schon seit der 9.klasse info und seit letztem schuljahr auch schon delphi, aber glubt mir das waren gaaaanz andre sachen so...

da haben wir gemacht:
- einfache zeichnungen auf der zeichenfläche zur einführung
- schleifen
- bedingungen (if blabala then blablabla)
- listen sortieren (bubbleSort, minSort,...)
- jah und zu guter letzt noch textadventure ein wenig

->und dann war ich schon weg von der schule,, komme auf meine jetzige in den info-kurs, freu mich schon, dass die das selbe programm machen und so..... und ich versteh trotzdem nix..

so mit vererbung usw... dann inits... real oder virtual.... hab ich alles gar nicht verstanden...

-> deswegen wollte ich auch hilfe von euch und danke ihr habt mir wirklich geholfen...


Aber ist doch blööd wenn jetzt mir dp-user so ne 6 in info wünschen.. wie ihr auch sicherlich in meinem ersten beitrag lesen könnt: ich wolllte von niemandem ne komplette HA

nur hilfen und evtll ansätze... die ihr mir auch gegeben habt.. VIELEN DANK!!!

so das ist meine ansicht der dinge. haut rein, bleibt sportlich
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#38

Re: Muss einen Kompass programmieren...

  Alt 21. Nov 2007, 16:14
Also ich glaube schon, das wir dir hier Denkanstösse geben. Es wurden dir auch Link zu einem Tutorial zu einem Canvas gegeben. Und dir geraten doch Delphi auf deinem Rechner zu installieren und ein Link zu einer Bezugsquelle der kostenlosen Turbo delphi Explorer Version gepostet.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von mleyen
mleyen

Registriert seit: 10. Aug 2007
609 Beiträge
 
FreePascal / Lazarus
 
#39

Re: Muss einen Kompass programmieren...

  Alt 22. Nov 2007, 09:39
Ui, sowas macht ihr in Info?
Ist ja imho mehr Mathe als Info...

Zitat von volcano57:
müssen wir ein programm schreiben, wo auf der zeichenfläche 2 kompasse erscheinen und wo die zeiger sich immer zur maus drehen, die maus bildet also egal wo sie sich grade auf der zeichenfläche befindet den Nordpol.
So, hatte langeweile und wollte eh meine Kenntnisse in Kreis/Dreiecksberechnungen mal wieder auffrischen. doppelnutzen kann ja nie Schaden )
Falls etwas nicht passt, kannst du ja etwas zur Übung umschreiben.
Kopier den Haufen mal in den Quelltext als Onmousemove-Ereignis von der Form.
Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender:TObject;Shift:TShiftState;X,Y:Integer);
const radius=100; //Hier kannst du die Größe der Kreise bestimmen!
begin
  Canvas.MoveTo(round(Form1.Width/2+radius),round(Form1.Height/2));Canvas.Ellipse(round(Form1.Width/2+radius-radius),round(Form1.Height/2-radius),round(Form1.Width/2+radius+radius),round(Form1.Height/2+radius));
  if(Form1.Width/2+radius-x)<>0then
  begin
    if(Floor(Sqrt(Power(Form1.Width/2+radius+Form1.Left+4-Mouse.CursorPos.X,2)+Power(Form1.Height/2+Form1.Top+30-Mouse.CursorPos.Y,2)))>radius-1)then
    begin
      if(x<Form1.Width/2+radius)then Canvas.LineTo(round(Form1.Width/2+radius-Cos(round(RadToDeg(ArcTan((Form1.Height/2-y)/(Form1.Width/2+radius-x))))*0.017453277)*radius),round(Form1.Height/2-Sin(round(RadToDeg(ArcTan((Form1.Height/2-y)/(Form1.Width/2+radius-x))))*0.017453277)*radius))
      else if(x>=Form1.Width/2+radius)then
      begin
        if(y<Form1.Height/2)and(x=Form1.Width/2+radius)then Canvas.LineTo(round(Form1.Width/2+radius+Cos(round(RadToDeg(ArcTan((Form1.Height/2-y) / (Form1.Width/2+radius-x))))*0.017453277)*radius),round(Form1.Height/2+Sin(round(RadToDeg(ArcTan((Form1.Height/2-y)/(Form1.Width/2+radius-x))))*0.017453277)*radius)-radius*2)
        else Canvas.LineTo(round(Form1.Width/2+radius+Cos(round(RadToDeg(ArcTan((Form1.Height/2-y)/(Form1.Width/2+radius-x))))*0.017453277)*radius),round(Form1.Height/2+Sin(round(RadToDeg(ArcTan((Form1.Height/2-y)/(Form1.Width/2+radius-x))))*0.017453277)*radius))
      end else Canvas.LineTo(Mouse.CursorPos.X-Form1.Left-4,Mouse.CursorPos.Y-Form1.Top-30);
    end else Canvas.LineTo(Mouse.CursorPos.X-Form1.Left-4,Mouse.CursorPos.Y-Form1.Top-30);
  end else
  begin
    if(Floor(Sqrt(Power(Form1.Width/2+radius+Form1.Left+4-Mouse.CursorPos.X,2)+Power(Form1.Height/2+Form1.Top+30-Mouse.CursorPos.Y,2)))>radius-1)then
    begin
      if(x<Form1.Width/2+radius)then Canvas.LineTo(round(Form1.Width/2+radius-0.000001326794896*radius),round(Form1.Height/2-0.99999999999912*radius))
      else if(x>=Form1.Width/2+radius)then
      begin
        if(y<Form1.Height/2)and(x=Form1.Width/2+radius)then Canvas.LineTo(round(Form1.Width/2+radius+0.000001326794896*radius),round(Form1.Height/2+0.99999999999912*radius)-radius*2)
        else Canvas.LineTo(round(Form1.Width/2+radius+0.000001326794896*radius),round(Form1.Height/2+0.99999999999912*radius))
      end else Canvas.LineTo(Mouse.CursorPos.X-Form1.Left-4,Mouse.CursorPos.Y-Form1.Top-30);
    end else Canvas.LineTo(Mouse.CursorPos.X-Form1.Left-4,Mouse.CursorPos.Y-Form1.Top-30);
  end; Canvas.MoveTo(round(Form1.Width/2-radius),round(Form1.Height/2)); Canvas.Ellipse(round(Form1.Width/2-radius-radius),round(Form1.Height/2-radius),round(Form1.Width/2-radius+radius),round(Form1.Height/2+radius));
  if(Form1.Width/2-radius-x)<>0then
  begin
    if(Floor(Sqrt(Power(Form1.Width/2-radius+Form1.Left+4-Mouse.CursorPos.X,2)+Power(Form1.Height/2+Form1.Top+30-Mouse.CursorPos.Y,2)))>radius-1)then
    begin
      if(x<Form1.Width/2-radius)then Canvas.LineTo(round(Form1.Width/2-radius-Cos(round(RadToDeg(ArcTan((Form1.Height/2-y)/(Form1.Width/2-radius-x))))*0.017453277)*radius),round(Form1.Height/2-Sin(round(RadToDeg(ArcTan((Form1.Height/2-y)/(Form1.Width/2-radius-x))))*0.017453277)*radius))
      else if(x>=Form1.Width/2-radius)then
      begin
        if(y<Form1.Height/2)and(x=Form1.Width/2-radius)then Canvas.LineTo(round(Form1.Width/2-radius+Cos(round(RadToDeg(ArcTan((Form1.Height/2-y) / (Form1.Width/2-radius-x))))*0.017453277)*radius),round(Form1.Height/2+Sin(round(RadToDeg(ArcTan((Form1.Height/2-y)/(Form1.Width/2-radius-x))))*0.017453277)*radius)-radius*2)
        else Canvas.LineTo(round(Form1.Width/2-radius+Cos(round(RadToDeg(ArcTan((Form1.Height/2-y)/(Form1.Width/2-radius-x))))*0.017453277)*radius),round(Form1.Height/2+Sin(round(RadToDeg(ArcTan((Form1.Height/2-y)/(Form1.Width/2-radius-x))))*0.017453277)*radius))
      end else Canvas.LineTo(Mouse.CursorPos.X-Form1.Left-4,Mouse.CursorPos.Y-Form1.Top-30);
    end else Canvas.LineTo(Mouse.CursorPos.X-Form1.Left-4,Mouse.CursorPos.Y-Form1.Top-30);
  end else
  begin
    if(Floor(Sqrt(Power(Form1.Width/2-radius+Form1.Left+4-Mouse.CursorPos.X,2)+Power(Form1.Height/2+Form1.Top+30-Mouse.CursorPos.Y,2)))>radius-1)then
    begin
      if(x<Form1.Width/2-radius)then Canvas.LineTo(round(Form1.Width/2-radius-0.000001326794896*radius),round(Form1.Height/2-0.99999999999912*radius))
      else if(x>=Form1.Width/2-radius)then
      begin
        if(y<Form1.Height/2)and(x=Form1.Width/2-radius)then Canvas.LineTo(round(Form1.Width/2-radius+0.000001326794896*radius),round(Form1.Height/2+0.99999999999912*radius)-radius*2)
        else Canvas.LineTo(round(Form1.Width/2-radius+0.000001326794896*radius),round(Form1.Height/2+0.99999999999912*radius))
      end else Canvas.LineTo(Mouse.CursorPos.X-Form1.Left-4,Mouse.CursorPos.Y-Form1.Top-30);
    end else Canvas.LineTo(Mouse.CursorPos.X-Form1.Left-4,Mouse.CursorPos.Y-Form1.Top-30);
  end;
end;
Btw: Würd mich mal interressieren was dein Lehrer zu dir dann sagt. (ob der 'ne Herleitung etc. haben will?)
  Mit Zitat antworten Zitat
volcano57

Registriert seit: 18. Nov 2007
18 Beiträge
 
#40

Re: Muss einen Kompass programmieren...

  Alt 22. Nov 2007, 15:00
wow das sieht ja schon.. -kompliziert?- aus...

ne herleitung? hm ich denke der will dass ich dem erklär wie ich das ganze geschafft habe...

vielen dank auf jeden fall!!!

auch wenn hier behauptet wird ich würd nix selber machen...

ihr seid mir schon wirklich eine hilfe! vielen dank!!!!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


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 13:57 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