AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Benötige Hilfe von einen Mathematiker
Thema durchsuchen
Ansicht
Themen-Optionen

Benötige Hilfe von einen Mathematiker

Ein Thema von EWeiss · begonnen am 16. Dez 2008 · letzter Beitrag vom 17. Dez 2008
Antwort Antwort
Seite 1 von 2  1 2      
EWeiss
(Gast)

n/a Beiträge
 
#1

Benötige Hilfe von einen Mathematiker

  Alt 16. Dez 2008, 05:00
Mein Problem ist folgendes.
Ich möchte ein Rundes Frame erstellen (kein Problem)
Unter diesen sollen dann abhängig vom Radius den der user über zwei Punkte bestimmt meine VisRadioButton positioniert werden.

Gehe ich nun von Rund aus dann ist der anfangspunkt an dem der Pfeil nach links steuert
und der Endpunkt wo der Pfeil sitzt der nach rechts die Plugins weiter schaltet.

Also Links .. (Point x,y) und rechts (Point x,y)
dazwichen sollen nun die RadioButton stehen abhängig vom Kreisbogen der übergeben wird.

Habe es nicht so mit Tangent,Sinus und Konsorte.

Kann mir jemand ein Beispiel erstellen mit simplen RadioButton die sich um einen
Ovalen oder Runden Kreis positionieren ?

Hab ein Pic angehängt wie das aussehen soll.
Meine Idee dabei ist wenn jemand einen Skin macht möchte ich nicht die Button unbedingt
immer horizontal an eine Fix position setzen.

Das Vis Window soll dann etwa 320x240 in der mitte des Kreises sitzen oder so wie der User es angibt.
Auf jedenfall 4x3

gruss Emil
Miniaturansicht angehängter Grafiken
ohne_titel-2_182.jpg  
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Benötige Hilfe von einen Mathematiker

  Alt 16. Dez 2008, 08:08
Also das Problem hört sich für mich nicht unlösbar an. Du kannst ausgehend von dem Mittelpunkt des Kreises deine Buttons anhand einens größeren Radius und fest vorgegebenen Winkeln relativ einfach anordnen. Dies wird dadurch vereinfacht, dass auch die Radionbuttons, von denen du sprichst mit der linken oberen Ecke referenziert wird.
Du kannst also einfach mit folgendem Vorgehen die Positionen deiner Buttons festlegen:

geg: Raduis des Kreises R
x-Koordinate des Kreismittelpunktes X
y-Koordinate des Mittelpunktes Y

Für das Beispiel nehmen wir jetzt einfach mal einen um 20 Pixel größeren Radius an --> R+20
Der Startwinkel soll 30° sein

Damit ergibt sich als x-Koordinate XB1 für den ersten Button: XB1 = X - (R+20)*Sin(30°)
und für die Y-Koordinate YB1 YB1 = Y - (R+20)*Cos(30°)

der nächste Button soll um 5° weiter vom 1. Button liegen: XB2 = X - (R+20)*Sin(35°)
und für Y-Koordinate YB2 = Y - (R+20)*Cos(35°)

und so weiter.


Hoffe das hilft dir erstmal. Kann dir leider kein gesondertes Programm schreiben, da ich noch nicht so viel mit Grafik programmiert habe. Wenn du noch fragen hast, schreib mir einfach.

MfG
BAMatze
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#3

Re: Benötige Hilfe von einen Mathematiker

  Alt 16. Dez 2008, 08:15
Moin, Moin.
Bin kein Mathematiker, ich versuch's trotzdem mal...

Wenn ich's richtig verstehe, dann definiert der User durch die beiden Punkte den Kreisdurchmesser. Der Kreisdurchmesser entspricht der Hypotenuse des Rechtecks. Damit sind wir wohl bei a²+b²=c² angelangt. Da das Seitenverhältnis des Rechtecks 4 zu 3 sein soll, also b/a=3/4 (Sorry, keine Ahnung, wie man hier Formeln darstellen kann). Das wird umgestellt, z.B. in b=3*a/4 und setzt das ein: c=Wurzel(a²+(3*a/4)²). Das c ist die Länge der Hypotenuse (=Punktabstand), also bekannt. Deshalb Auflösen nach a (oder ganz banal iterieren). Wenn a gefunden, b ausrechnen.
Damit hast du die Abmessungen des Buttons. Nun fehlt noch die Position - da kannst du ja vielleicht noch mal selber überlegen.

// Hmmm, sehe gerade eine andere Antwort. Na, ich schicke meinen Ansatz mal ab da ich die Aufgabenstellung doch irgendwie völlig anders verstanden habe.

// Ohh, die Punkte um den Kreis herum waren gefragt. Na dann kann meine Antwort in den Papierkorb
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

Re: Benötige Hilfe von einen Mathematiker

  Alt 16. Dez 2008, 08:58
In diesem Sinne wäre es praktisch, mehr Infos zu haben:

Was ist gegeben? Gehen wir vom Kreis aus und soll am besten noch das Rechteck berechnet werden oder ist das Rechteck gegeben?

Sollen die Knöpfe am Rand im gleichen Abstand oder in gleichen Winkeln angeordnet sein? Oder eine Mischung beider (Minimaler Abstand damit sie sich nicht überlappen ansonsten konstanter Winkel?)

Ach, und das:
Zitat:
Unter diesen sollen dann abhängig vom Radius den der user über zwei Punkte bestimmt meine VisRadioButton positioniert werden.
Gehe ich nun von Rund aus dann ist der anfangspunkt an dem der Pfeil nach links steuert
und der Endpunkt wo der Pfeil sitzt der nach rechts die Plugins weiter schaltet.
Also Links .. (Point x,y) und rechts (Point x,y)
dazwischen sollen nun die RadioButton stehen abhängig vom Kreisbogen der übergeben wird.
Hab ich irgendwie nicht so ganz verstanden ...

Oder heißt das, dass du 2 Punkte gegeben hast und zwischen diesen beiden Punkten eine gewisse Anzahl anderer Knöpfe anordnen möchtest?

Grüße von Julius, der gleich in die "Höhere Mathematik 3"-Vorlesung geht
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#5

Re: Benötige Hilfe von einen Mathematiker

  Alt 16. Dez 2008, 13:52
So viel hab ich aus dem obigen Text verstanden:
Zitat von EWeiss:
Kann mir jemand ein Beispiel erstellen mit simplen RadioButton die sich um einen
Ovalen oder Runden Kreis positionieren ?
ein Beispiel:
Delphi-Quellcode:
type
  TPointArray = array of TPoint;

function KreisPunkte(
  P: TPoint; {Mittelpunkt des Kreises auf dem die Punkte liegen}
  R: Word; {Radius des Kreises}
  Alpha: Double; {Winkel 0..360 für den Ersten Punkt; 0 = 0Uhr; 90 = 3Uhr}
  StepAlpha: Double; {Winkel zwischen den Punkten}
  StepCount: Integer {Anzahl der Punkte}
  ): TPointArray;
var
  i: Integer;
begin
  {Grad in Bogenmaß umrechnen}
  Alpha := DegToRad(Alpha);
  StepAlpha := DegToRad(StepAlpha);
  SetLength(Result, StepCount);
  for i := 0 to StepCount - 1 do
  begin
    with Result[i] do
    begin
      x := P.x + Round(R * sin(Alpha));
      y := P.y - Round(R * cos(Alpha));
    end;
    Alpha := Alpha + StepAlpha;
  end;
end;

procedure TForm1.PaintBox1Paint(Sender: TObject);
var
  PointArray: TPointArray;
  P: TPoint;
  R: Word;
  i: Integer;
  s: String;
begin
  with PaintBox1 do
  begin
    P.x := Left + (Width div 2);
    P.y := Top + (Height div 2);
    R := (Min(Width, Height) div 2) - 40;
    PointArray := KreisPunkte(P, R, 180, 15, 6);
    {Ausgabe Punkt P}
    Canvas.Pen.Color := clBlack;
    Canvas.MoveTo(P.x, P.y - 4);
    Canvas.LineTo(P.x, P.y + 5);
    Canvas.MoveTo(P.x - 4, P.y);
    Canvas.LineTo(P.x + 5, P.y);
    {Ausgabe Kreis um P mit Radius R}
    Canvas.Brush.Style := bsClear;
    Canvas.Pen.Color := clBlack;
    Canvas.Pen.Style := psDot;
    Canvas.Ellipse(P.x - R, P.y - R, P.x + R, P.y + R);
    {Ausgabe Punkte auf dem Kreis}
    for i := Low(PointArray) to High(PointArray) do
    begin
      s := IntToStr(i + 1);
      with PointArray[i] do
      begin
        Canvas.Brush.Color := clYellow;
        Canvas.Brush.Style := bsSolid;
        Canvas.Pen.Color := clBlack;
        Canvas.Pen.Style := psSolid;
        Canvas.Ellipse(x - 10, y - 10, x + 10, y + 10);
        Canvas.Brush.Style := bsClear;
        Canvas.Font.Color := clRed;
        Canvas.TextOut(x - (Canvas.TextWidth(s) div 2),
                       y - (Canvas.TextHeight(s) div 2),
                       s);
      end;
    end;
  end;
end;
Miniaturansicht angehängter Grafiken
kreis_209.jpg  
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

Re: Benötige Hilfe von einen Mathematiker

  Alt 16. Dez 2008, 14:43
Zitat von Blup:
So viel hab ich aus dem obigen Text verstanden:
Zitat von EWeiss:
Kann mir jemand ein Beispiel erstellen mit simplen RadioButton die sich um einen
Ovalen oder Runden Kreis positionieren ?
Danke für deine Mühe.
Eigentlich hat das nichts mit Grafik zu tun sondern mit Controls.
Aber dein Grundgedanke ist schon richtig.
Einfache Radiobutton werden auf die Form gelegt und diese sollen sich dann ausgehend von den Eckpunkten
um den Kreis positionieren.

Das problem bei mir ist halt die Berechnung.
Wobei man nicht vergessen darf, wird die Form in der größe verändert, verändert sich der Kreisbogen
was bedeutet die angegebenen Eckpunkte müssen zur größe der Form und den Mittelpunkt des Kreises
berechnet werden.
Die Form bleibt ja nicht immer genau Quadratisch wenn man sie vergrößert.

ZU schierig für mich.

gruss Emil

EDIT:
Sorry drei pics
Das Frame.png ist das ausgangs Bilf für das FrameControl mit unteren halb kreis.
BogenOrg.png ist die ausgangsgröße wenn das programm gestartet wird
Bogen.png ist die veränderte größe "Bogenmaß wurde verändert"
Um den Kreis sollen nun die unteren radiobutton positioniert werden wobei die Pfeile
end und startpunkt festlegen.
Miniaturansicht angehängter Grafiken
bogen_231.png   bogenorg_156.png   frame_289.png  
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#7

Re: Benötige Hilfe von einen Mathematiker

  Alt 16. Dez 2008, 17:59
Interessant ...

3 Fragen:

1. Auf dem kleinen Frame.png Bild ist das unten ja ein Halbkreis. auf den anderen beiden ist da aber irgendwie ein Knick rechts und links ...

2. Welche Pfeile? Ich sehe einen rechts von den Radiobuttons, und einen im Zweischenraum rechts zwischen den Einstelluingsdingern und dem vertikalen Schriftzug. Wie legen die jetzt Start und Endpunkt fest?

3. Sollen die Optionskästchen eien konstanten horizontalen Abstand haben, einen konstanten Abstand entlang des Kreises oder konstante Winkel?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

Re: Benötige Hilfe von einen Mathematiker

  Alt 16. Dez 2008, 18:39
Zitat von jfheins:
Interessant ...

3 Fragen:

1. Auf dem kleinen Frame.png Bild ist das unten ja ein Halbkreis. auf den anderen beiden ist da aber irgendwie ein Knick rechts und links ...

2. Welche Pfeile? Ich sehe einen rechts von den Radiobuttons, und einen im Zweischenraum rechts zwischen den Einstelluingsdingern und dem vertikalen Schriftzug. Wie legen die jetzt Start und Endpunkt fest?

3. Sollen die Optionskästchen eien konstanten horizontalen Abstand haben, einen konstanten Abstand entlang des Kreises oder konstante Winkel?
zu eins verstehe nicht ganz was du meinst

zu zwei der zweite pfeil wird dann sichtbar wenn der erste RadioButton(Plugin) nach links verschoben (unsichtbar) ist.

zu drei ja im Horizontaler lage haben sie einen abstand von 32
Denke aber das es besser aussieht wenn ich den Label dann auf Multiline setze so das die Nummer in dem
fall dann unter den Button ist.
Das verändert dann die länge, aber grundsätzlich fester abstand.

gruss Emil
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#9

Re: Benötige Hilfe von einen Mathematiker

  Alt 16. Dez 2008, 19:57
Bevor ich den Code so kommentiere, dass du ihn verstehen kannst: Ist das im Anhang ungefähr dass, was du dir gedacht hast?
Angehängte Dateien
Dateityp: exe test_1_113.exe (118,5 KB, 16x aufgerufen)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

Re: Benötige Hilfe von einen Mathematiker

  Alt 16. Dez 2008, 20:13
Zitat von jfheins:
Bevor ich den Code so kommentiere, dass du ihn verstehen kannst: Ist das im Anhang ungefähr dass, was du dir gedacht hast?
ja so in der art vielleicht kannst du eine exe ohne den Nummer Namen machen ?
So kann ich schlecht die exakte position erkennen.

Wenn du 10 Button addierst sollt rechts und links ein Pfeil oder zum testen ein normaler Button sein mit denen
man die RadioButton verschieben kann.

Beispiel:
Maximale Plugins sind 10
Innerhalb des Radius Start und End Position passen aber nur 9 also wäre in diesen Fall der rechte SlideButton(Pfeil) sichtbar
da du den 10 RadioButton ja nicht sehen kannst.
Klickst du nun auf den rechten SlideButton dann sollten alle RadioButton um eins nach links wandern ohne das eine Position verändert wird.
Nun siehst du den 1 RadioButton nicht mehr aber dafür den 10.
Was bedeutet das nun der rechte SlideButton unsichtbar wird und der linke SlideButton sichtbar.

Also die SlideButton sollen abhängig von den sichtbaren Plugins ein oder ausgeschaltet werden.
Wird die Form größer verändert sich der Radius und mehr RadioButton passen dann zwischen den start und Endpunkt
Sind alle 10 sichtbar dann sollten auch die SlideButton unsichtbar sein.

Hoffe du verstehst was ich meine ist was schlecht zu erklären

Danke für die Arbeit die du dir machst..
EDIT:
Im Moment sind beim ändern der Höhe die RadioButton innerhalb des Frame sollten aber drunter bleiben.
Die wandern mit bzw.. setzen sich falsch
Dann sehe ich das die Button zentriert zur Mittelpunktachse des Frames addiert werden
Sollten aber eigentlich vom Startpunkt aus addiert werden.
So wie auf meinen Pic was ich hochgeladen habe.

Bild im Anhang zur besseren verständigung

gruss Emil
Miniaturansicht angehängter Grafiken
ohne_titel-2_1__366.jpg  
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:56 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