Objekt mit Runden Ecken



  • Hallo Leute,

    ich möchte ein Viereck zeichnen, welches runde Ecken hat. Kann mir jemand sagen, wie ich das realisiere, ohne B-Spline Kurven zu verwenden?


  • Mod

    indem du einen kreis zeichnest 🙂

    rapso->greets();



  • Andreas K schrieb:

    runde Ecken

    🙂 Du könntest Dir mal was zum Thema Hermite-Spline-Interpolation suchen. Man gibt jedem Punkt zusätzlich zu seiner Position dabei noch eine Tangente an die Kurve.



  • hey rapso oder so ... heute wieder ne tüte witz zum frühstück gehabt???



  • Die frage ist mal wieder womit ? Direct3D OpenGL oder sonst was ? Ich habe mal mit einfachen berechnungen einen Kreis aus Dreiecken erstellt mit Direct3D. Einen Trianglefan benutzt und dann einfach alle Punkte auf dem Kreis errechnet. Man kann somit dann auch nur einen Viertel Kreis machen und damit das Viereck (wobei ja warscheinlich ein Rechteck gemeint ist sonst müsste man jedesmal den Winkel errechnen) abrunden.



  • ich möchte das mit OpenGL realisieren. Kannst du dein Beispiel mal posten?


  • Mod

    Andreas K schrieb:

    hey rapso oder so ... heute wieder ne tüte witz zum frühstück gehabt???

    haben wir etwa das gleiche gegessen, oder eher getrunken???

    runde ecken *hehe*

    aber unter runden ecken kann man sich viel vorstellen... wie wäre es wenn du ma ein bild in netz stellst (oder mailst) wie das ausschauen soll..

    es wäre z.B. möglich das viereck mehrere male zu zeichnen und bei jedem durchgang die höche zu ändern und daraus dann die breite zu errechnen...

    also z.B.

    ein viereck mit 2*2 kantenlänge, bei 0.f|0.f ist das center, dann mußt du dir nen radius ausdenken für die runden der kanten vom center aus
    und rechnest etwa sowas

    for(float y=.9f;y<1.1f;y+=0.01)
    {
    float x=sqrt(radius*radius-y*y);
    DrawRect(x,y,-x,-y);
    }
    

    wobei als beispielradius etwas genommen werden sollte so um 1.21-1.41 , dann bekommst du ne sichtbare rundung

    ich weiß nur nicht ob das so ist wie du dir das vorstellst... runde ecken 😉 jaja... und im kreis in die ecke pinkeln... 🙂



  • Ich glaube er meint sowas:

    Ein normales Viereck und an jeder Ecke befindet sich ein Kreis mit dem Radius R. Die Kreise befinden sich auch an den Kanten des Vierecks (und verbinden damit die Kreise and den Ecken). Dadurch sind die Ecken abgerundet (ein Viertel Kreisausschnitt).
    Du mußt also jeweils das Viereck zeichnen, die Kreisviertel an jeder Ecke und die dann verbinden. Einfacher wäre es (ich denk mir das auch nur aus) die Kanten des Vierecks nach außen zu "schieben" (mit dem Radius des Kreises als Verschiebeoffset) und das entstandene "offene" Viereck mit den Viertelkreisen zu schliessen. Hoffe mal versteht in etwa wie das aussehen soll. Sonst muss ich euch leider mit meinen "hervorragenden" Paint-Kenntnisse quälen *hrhr*

    cya
    liquid


  • Mod

    naja, was er meint, das weiß wohl nur er... uns hat er es jedenfalls nciht erzählt.

    rapso->greets();



  • Wir können allerdings vermuten was er meint und mögliche Lösungsvorschläge posten. Manchmal fällt es einem (selbst mir) schwer sich verständlich für andere auszudrücken. Kein Grund deshalb gleich "bockig" zu werden rapso 😉

    cya
    liquid


  • Mod

    LiquidAcid schrieb:

    Wir können allerdings vermuten was er meint und mögliche Lösungsvorschläge posten. Manchmal fällt es einem (selbst mir) schwer sich verständlich für andere auszudrücken. Kein Grund deshalb gleich "bockig" zu werden rapso 😉

    cya
    liquid

    wo wurde ich bockig? 1. hab ich mit einem scherzl geantworted und 2. als einziger hier den source wie gewünscht geliefert... *kopfkratz*

    rapso->greetS();



  • Rapso, du bist so bockig, ich kann dich nicht leiden. Echt!



  • Hi Leute,

    ich danke euch trotzdem für die reichhaltigen Lösungsansätze.


  • Mod

    TGGC schrieb:

    Rapso, du bist so bockig, ich kann dich nicht leiden. Echt!

    suess

    rapso->greets();



  • rapso schrieb:

    uns hat er es jedenfalls nciht erzählt.

    Ich fand das etwas "bockig" konnotiert. Aber kann sein, dass ich das fehlinterpretiert habe.

    cya
    liquid


  • Mod

    eigentlich hab ich das nicht zum interpretieren geschrieben, sondern wort wörtlich gemeint.

    solange jemand nicht genau aufschreibt, was sein problem ist, ist es den anderen schwer ihm zu helfen. wir wissen ja noch nichtmal ob er jetzt etwas vectorielles haben möchte oder einfach nur die pixel per hand füllen möchte. ist das viereck gefüllt oder nicht sollte man auch wissen, mein vorschlag (der source) klappt nur bei gefüllten hingepixelten vierecken ... wobei ich nicht weiß ob ihm das hilft.. woher auch 🙄

    er hätte auch sagen können wofür er das braucht z.B. vielleicht möchte er einen button machen, da wäre vielleicht eine textur in der gewünschten form besser gewesen...

    und darauf gebracht das zu posten hat mich nur

    Ich glaube er meint sowas:

    rapso->greets();



  • rapso schrieb:

    eigentlich hab ich das nicht zum interpretieren geschrieben, sondern wort wörtlich gemeint.

    Dann solltest du das vielleicht nächstes mal dazuschreiben, denn genausogut könnte man meinen dass du das hier

    rapso schrieb:

    indem du einen kreis zeichnest 🙂

    wort wörtlich gemeint hast 😉

    rapso schrieb:

    solange jemand nicht genau aufschreibt, was sein problem ist, ist es den anderen schwer ihm zu helfen.

    schwer != unmöglich

    rapso schrieb:

    wir wissen ja noch nichtmal ob er jetzt etwas vectorielles haben möchte oder einfach nur die pixel per hand füllen möchte.

    Dann wäre es doch nicht verkehrt einfach mal nachzufragen, oder?

    rapso schrieb:

    ist das viereck gefüllt oder nicht sollte man auch wissen, mein vorschlag (der source) klappt nur bei gefüllten hingepixelten vierecken ... wobei ich nicht weiß ob ihm das hilft.. woher auch 🙄

    Wenn ihm das nicht hilft bringt es dich doch nicht um. Vielleicht findet mal ein anderer Boarduser diesen Thread und hat dasselbe Problem und kann dann eventuell auf deine dort gepostet Lösung (auch wenn sie für den Threadersteller nicht hilfreich war) zurückgreifen.

    rapso schrieb:

    er hätte auch sagen können wofür er das braucht z.B. vielleicht möchte er einen button machen, da wäre vielleicht eine textur in der gewünschten form besser gewesen...

    Dann mögen wir ihm seine Vergesslichkeit verzeihen, nicht?

    rapso schrieb:

    und darauf gebracht das zu posten hat mich nur

    Ich glaube er meint sowas:

    Ich hab damit nur meine Zweifel ausgedrückt, dass das (was ich gepostet habe) dem Threadersteller weiterhilft, denn ich hatte den Eindruck, dass dieser Probleme hatte sich verständlich für die anderen zu fassen. Das sollte nur ein Versuch sein demjenigen unter die Arme zu greifen. Und deshalb kann ich deinen Kommentar auf meinen Post auch in keinster Weise verstehen.

    cya
    liquid


  • Mod

    ich bin weder sauer und muss ihm was verzeihen, noch muss _ich_ nachfragen, wenn er nur sagt "ich habe ein problem" 🙂 . denn er würde es möglichst gut schildern, wenn es ihm wichtig wäre, dass er hilfe bekommt.

    ich antworte einfach nur, er möchte ein viereck ohne ecken, also schlage ich ihm nen kreis vor (wörtlich gemeint) ... q.e.d 😃 ... ja, damit ist mein niveau nicht besser als seines, aber helfen kann ich auch nicht, also ist ein "dump" für den thread drinne.

    rapso->greets();



  • Anscheinend willst du mich nicht verstehen und ich habe auch keine Lust darauf mich mit dir zu streiten. Wenigstens habe ich versuchst zu helfen...

    cya
    liquid



  • Ne ne, wie kann man nur so bockig sein...


Anmelden zum Antworten