Interferenz entgegenlaufender Wellen

+A -A
Autor
Beitrag
Chris2003
Ist häufiger hier
#1 erstellt: 19. Mai 2004, 18:10
Hi Leute,
Ich habe da eine Wette mit meinem Physiklehrer (12Klasse, Physik 4std.)laufen und zwar:

Die Interferenz zweier entgegenlaufender Wellen (eindimensional) ergeben eine stehende Welle, wenn sie die gleiche Amplitude und Wellenlänge haben.
! Was aber passert wenn die Amplituden (Frequenz/Wellenlänge bleibt gleich) unterschiedlich groß ist ?
Steht dann die resultierende Welle, wandert sie oder wackelt sie hin und her ?
Ich glaube sie bewegt sich immer hin und her. Er glaubt sie steht, aber hat nicht mehr dieselbe Frequenz (so ne Art Schwebung).
Also, es geht um ein Kinderriegel, ich gebe auch die Hälfte ab :D. Mit unserer unmodernen Austattung in der Schule kann man leider nicht testen.
Kann mir jemand helfen, ich will einmal schlauer als er sein Gruß Chris


[Beitrag von Chris2003 am 19. Mai 2004, 18:11 bearbeitet]
ähM_Key
Ist häufiger hier
#2 erstellt: 21. Mai 2004, 19:53
Hi!

Das hat mich so sehr interessiert, da hab ich das gleich mal programmiert!

Wegen den Rundungsfehlern ist es nicht ganz ideal, aber man erkennt zumindest die Resultierende!

hier gehts zum Download.

Viel Spass!

Grüße; ähM_Key

PS: ...bei Bedarf kann ich das Progi auch noch erweitern; hab das bloß erst mal schnell hingeschmissen

EDIT: Hab mal aus der *.exe ne *.zip gemacht, damit ihr keine Angst wegen Virus usw. haben müsst!


[Beitrag von ähM_Key am 17. Jun 2004, 17:24 bearbeitet]
Chris2003
Ist häufiger hier
#3 erstellt: 25. Mai 2004, 20:18
Vielen Dank für deine Mühe. Wie hast du das programmiert ? Mein Lehrer lag falsch, die Welle steht nähmlich nicht. Du kriegst die Hälfte meines Kinderriegels, musst mir nur die Adresse sagen. Versand übernimm ich
Ich hoffe, ich darf das Programm vervielfältigen, um allen im Kurs zu zeigen, dass auch Lehrer mal falsch liegen :D.
Aber jetzt gehts am Donnerstag erstmal nach Kroatien segeln.
Schöne Pfingsten an alle !!!!!!!!!!

Gruß Chris
Chris2003
Ist häufiger hier
#4 erstellt: 25. Mai 2004, 20:21
PS: Als Expansion Set könntest du ja noch ein Frequenzvariable einsetzen, und verschiedene Geschwindigkeitsstufen programmieren. Außerdem sieht man nicht gleich welche Kurve zu welcher Amplitude1 gehört.
Aber nicht das das alles kommerziell wird....

Gruß Chris
ähM_Key
Ist häufiger hier
#6 erstellt: 26. Mai 2004, 14:16
...das sind nur ganz wenige Zeilen Code!

Ich werde noch eine Legende und veränderbare Wellenlängen/Frequenzen und Geschwindigkeiten einbauen!

Start/Stop reagiert immer nur nach einer vollen Periode...werde ich auch noch ändern!

Aber morgen hab ich Prüfung, und da hab ich jetzt nicht wirklich viel Zeit...wollte vor Verbesserungen nur erst auf Feedback warten!

Grüße; ähM_Key
Totenlicht
Stammgast
#9 erstellt: 27. Mai 2004, 11:13
Ahoi


Der Quelltext würde mich sehr interessieren (obwohl ich nur Java und C# progge).

Das Flimmern müßte doch aber trotzdem wegzubekommen sein, mit Java beispielsweise ist das kein Problem, man verwendet eine Art Puffer ...
ähM_Key
Ist häufiger hier
#10 erstellt: 27. Mai 2004, 11:32
Vorsicht, nicht erschrecken:

...ist natürlich ohne Formatierung und Tag's schlecht lesbar...


unit Unit1_IF;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Label3: TLabel;
Timer1: TTimer;
TrackBar1: TTrackBar;
Label4: TLabel;
Label5: TLabel;
Edit3: TEdit;
Label6: TLabel;
Edit4: TEdit;
CheckBox1: TCheckBox;
Label7: TLabel;
Edit5: TEdit;
Label8: TLabel;
procedure Wait(time: double);
procedure Button1Click(Sender: TObject);
//procedure run;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure Edit3KeyPress(Sender: TObject; var Key: Char);
procedure Edit4KeyPress(Sender: TObject; var Key: Char);
procedure Edit5KeyPress(Sender: TObject; var Key: Char);
procedure Edit3Change(Sender: TObject);
procedure Edit4Change(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure Edit5Change(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;

const
kf=pi/180;
max=387;

var
Form1: TForm1;
z,winkel:integer;
lauf:boolean;

implementation

{$R *.dfm}

procedure TForm1.Wait(time: double);
var Start: Integer;
begin
Start:=GetTickCount;
while GetTickCount-Start <= time do
application.ProcessMessages;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var y1,y2,y3,zz1,zz2,zz3:integer;
z1,z2,maxwink:extended;
begin
canvas.pen.color:=clBlack;
Canvas.Rectangle(0,0,722,387);
Canvas.MoveTo(0,193);
Canvas.LineTo(720,193);
z1:=strtoint(edit1.text)*sin((-winkel)*kf/(strtoint(edit3.text)/64)-(strtoint(edit5.text))*kf);
z2:=strtoint(edit2.text)*sin((winkel+182)*kf/(strtoint(edit4.text)/64));
y1:=193-round(z1);
y2:=193-round(z2);
y3:=193-round(z2+z1);
for z:=1 to 720 do
begin
z1:=strtoint(edit1.text)*sin((z-winkel)*kf/(strtoint(edit3.text)/64)-(strtoint(edit5.text))*kf);
z2:=strtoint(edit2.text)*sin((z+winkel+182)*kf/(strtoint(edit4.text)/64));
zz1:=193-round(z1);
zz2:=193-round(z2);
zz3:=193-round(z2+z1);
canvas.pen.color:=clBlack;
if (zz1>0) and (zz1<max) and (y1>0) and (y1<max) then begin
canvas.MoveTo(z,y1);
canvas.LineTo(z+1,zz1);
end;
y1:=zz1;
canvas.pen.color:=clRed;
if (zz2>0) and (zz2<max) and (y2>0) and (y2<max) then begin
canvas.MoveTo(z,y2);
canvas.LineTo(z+1,zz2);
end;
y2:=zz2;
canvas.pen.color:=clGreen;
if (zz3>0) and (zz3<max) and (y3>0) and (y3<max) then begin
canvas.MoveTo(z,y3);
canvas.LineTo(z+1,zz3);
end;
y3:=zz3;
end;
inc(winkel);
if strtoint(edit3.text)>=strtoint(edit4.text)
then maxwink:=strtoint(edit3.text)
else maxwink:=strtoint(edit4.text);
if winkel=round(5.625*maxwink) then
begin
winkel:=0;
if checkbox1.checked then begin
timer1.enabled:=false;
lauf:=false;
end;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if lauf=true
then begin
lauf:=false;
timer1.enabled:=false;
end
else begin
lauf:=true;
timer1.enabled:=true;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.DoubleBuffered:=true;
Canvas.Brush.Color:=clWhite;
winkel:=0;
lauf:=false;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
timer1.Interval:=10*(11-trackbar1.Position);
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9',#8]) then
key:=#0;
end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9',#8]) then
key:=#0;
end;

procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9',#8]) then
key:=#0;
end;

procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9',#8]) then
key:=#0;
end;


procedure TForm1.Edit5KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9',#8]) then
key:=#0;
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
if strtoint(edit1.Text)>1024 then edit1.Text:='1024';
end;

procedure TForm1.Edit2Change(Sender: TObject);
begin
if strtoint(edit2.Text)>1024 then edit2.Text:='1024';
end;

procedure TForm1.Edit3Change(Sender: TObject);
begin
if edit3.text='0' then edit3.Text:='1';
if strtoint(edit3.Text)>1024 then edit3.Text:='1024';
end;

procedure TForm1.Edit4Change(Sender: TObject);
begin
if edit4.text='0' then edit4.Text:='1';
if strtoint(edit4.Text)>1024 then edit4.Text:='1024';
end;


procedure TForm1.Edit5Change(Sender: TObject);
begin
if strtoint(edit5.Text)>359 then edit5.Text:='359';
end;

end.


Ich gebe zu, sonderlich sauber ist's nicht geschrieben...

Der Doublebuffer wird ja schon verwendet, trotzdem klappt's irgendwie nicht richtig...hab schon mal im Delphi-Forum nachgefragt, ob man doch was drehen kann

Grüße; ähM_Key


[Beitrag von ähM_Key am 27. Mai 2004, 12:07 bearbeitet]
Suche:
Das könnte Dich auch interessieren:
Interferenz- Grundsatzfrage oder Verständnisproblem?
Earl_Grey am 15.10.2006  –  Letzte Antwort am 18.10.2006  –  12 Beiträge
Klangbeschreibungen, was bedeuten sie eigentlich
steve65 am 20.11.2004  –  Letzte Antwort am 16.04.2021  –  20 Beiträge
Grundsatzfragen der Physik ;-)
Earl_Grey am 02.07.2007  –  Letzte Antwort am 13.05.2008  –  700 Beiträge
Was ist eine digitale Frequenzweiche und wie funktioniert sie?
Griefer am 30.11.2021  –  Letzte Antwort am 30.11.2021  –  2 Beiträge
Fachbegriff gesucht^^
nos1609 am 25.01.2010  –  Letzte Antwort am 28.02.2010  –  5 Beiträge
WAS IST EINE GEGENKOPPLUNG?
messschuh am 27.09.2007  –  Letzte Antwort am 02.10.2007  –  3 Beiträge
Physik Facharbeit Thema Lautsprecher
MaKo89 am 14.09.2006  –  Letzte Antwort am 18.09.2006  –  5 Beiträge
Zusammenhang Schalldruck, Frequenz und Membranhub
axim am 07.08.2022  –  Letzte Antwort am 14.08.2022  –  3 Beiträge
0dBFS Eine Verständnisfrage
richi44 am 06.09.2006  –  Letzte Antwort am 12.09.2006  –  6 Beiträge
Knacksen von Audiodateien
Schnax am 04.01.2020  –  Letzte Antwort am 04.01.2020  –  3 Beiträge
Foren Archiv
2004

Anzeige

Aktuelle Aktion

Partner Widget schließen

  • beyerdynamic Logo
  • DALI Logo
  • SAMSUNG Logo
  • TCL Logo

Forumsstatistik Widget schließen

  • Registrierte Mitglieder927.672 ( Heute: 13 )
  • Neuestes MitgliedTlttAvact
  • Gesamtzahl an Themen1.556.165
  • Gesamtzahl an Beiträgen21.653.442