Wie mache ich aus einem Strich eine Feder?
-
-
WoW, jo mit der letzten lösung komme ich prima zurecht super danke euch ,
kleine frage noch , besteht die möglichkeit die dicke des striches zu definieren? der kommt nämlich nen bisschen schmalbrüstig um die ecke
undv wie kann ich den anfangs , mitten, und end Durchmesser (De1 ,De2, De3) definieren ?Und vielleicht noch die steigung der einzelnen Windungen .....ich bräuchte nur die ersten befehle (ersten 2 denke dürften reichen) weiter spinnen denke sollte selber klappen
würde das jetzt gerne weiter ausbauen
Ihr könnt ja nen nettes tut raus basteln
erste schritte in opengl oder sowas
Danke nochmal für eure antworten!
-
-
jupp, thx das problem mit der strichdicke ist aus der welt !
das problem mit der steigung ist fast gelöst
rad = (3.14159f * a) / [b]3800;[/b] //<----lässt sich hier einstellen aber gilt leider nur für alle windungen und nicht speziell für eine bzw, der anzahl windungen die ich vorgebe//
zudem sehr interessant was bei Wiki steht !
-
sieht zwar nicht so schön aus, aber funzt...(lässt die Feder schwingen, sieht nur etwas blöd aus, da es linear ist)
static float s = 1000.0f; static bool d = true; float step = 20; if(d) { if(s <= 1000.0f) s += step; else d = false; } else { if(s >= 500.0f) s -= step; else d = true; } float rad; glBegin(GL_LINE_STRIP); for(float a = 0.0f; a <= 2000.0f; a += 3.0f) { glColor3f(1.0f/1000.0f*a + 0.5f, 0.0f, 0.0f); rad = (3.15159f * a) / 180.0f; glVertex3f(cos(rad), sin(rad), a / s); } glEnd();
-
rad = (3.14159f * a) / 3800; //<----lässt sich hier einstellen aber gilt leider nur für alle windungen
und nicht speziell für eine bzw, der anzahl
windungen die ich vorgebe//1 Windung = 360°
Wo liegt das Problem?Hier noch was:
for(float a = 0.0f; a <= angle; a += angle / cPoints)
cPoints bestimmt, wie "eckig" der Helix ist
-
Wow nice work !
rad = (3.15159f * a) / 180.0f;
immer dieses pi :p
Das mit dem schwingen sieht echt klasse aus! So langsam aber sicher verstehe ich immer besser was es bei ,für euch "simplen", struktur veränderungen einer gl anwendung auf sich hat. Danköö nochmal, an dieser stelle, das ihr euch die mühe macht und helft!
glColor3f([b]1.0f[/b]/1000.0f*a + [b]0.5f[/b], 0.0f, 0.0f)
Ist ja mal ne interessante sache , geht man bei 1.0 & 0.5f weiter runter wirkt die Feder transparent, und bei der 1000 kann man den berreich der windung definieren bis wo sie transparent wirkt!!! cooler effekt, wird bestimmt noch hilfreich sein!!!
Hab gerade mal versucht die größe der angezeigten Feder etwas zu verkleinern, um die Windungen richtig anzeigen zu lassen, auch bei rotation, das hab ich mit dem befehl
glScale(X,X,X);
versucht, (für X natürlich ne zahl z.b; 1 verwendet)
Jetzt bekomme ich die meldung das der befehl noch nicht deklariert ist ,hab alle dazu gehörigen gl files included.... wo drann kann das liegt,das er den befehl nicht erkennt?
Hab auch drauf geachtet das der befehl nicht zwischen glBegin und glEnd liegt wie es auf wiki beschrieben steht! (auch nochmal thanx für die seite ,ist sehr interessant, wusste selber garnicht das sich wiki so "ausführlich" mit dem thema befasst!)
Alle files die ich includiere
#include <windows.h> #include <gl/gl.h> #include <cmath> #include <gl/glext.h> #include <gl/glu.h>
Mehr gl header hab ich auch nicht im Ordner drin.
Könnte die deklarierung so aussehen?
glScale(x(y(z);
Hab auch schon GL_MAX_TEXTURE_SIZE --- GL_TEXTURE_WIDTH --- GL_TEXTURE_HEIGHT
versucht(aus der gl.h), wo ich aber die meldung bekomme das diese befehle keine funktion sind! Obwohl ich mal stark vermute , das man diese befehle nur dann brauch wenn man eigene Texturen verwendet/hinzufügen möchte, oder lieg ich da falsch?Kleines beispiel was ich versucht habe : "nicht lachen
Newb@work
"
glLineWidth (4.0); glPushMatrix (); // glScale(x(y(z); /*<----Bringt die fehler meldung das x,y,z nicht deklariert ist*/ // glScale (-1,-1,-1,) /*ums halt kleiner darzustellen wie im moment*/ glRotatef (theta, 1.0f, 0.0f, 1.0f); // GL_MAX_TEXTURE_SIZE (640,480) /*bei einer Fenster größe von 800x600//Und compiler jammert das dieser befehl keine funktion ist*/
Es wäre vielleicht von vorteil wenn man eine Liste bekommen könnte (in Deutsch , wie Wiki nur ausführlicher) in der die einzelnen Funtionen zu jedem befehl stehen + ausnahme regelungen , so eine noob version meine ich , wo man auch ohne groß zu raten erklärt bekommt was welcher befehl bewirkt und wie man ihn einbindet! Bisher hab ich mir die infos aus tuts besorgt. Was doch sehr mühsam ist und die daraus meistens resultierenden Fehlermeldungen des compilers eine newbie wie mich echt an seine grenzen stoßen lässt. (Das ist eines der größten mankos was mir als Einsteiger aufgefallen ist.Meistens kann ich die fehlermeldungen wegen mangelnder erfahrung nicht zuordnen oder halt sehr schwer!)
Hab begonnen selber so ein File anzulegen wo ich mir alle befehle reinkopiere die ich finden kann.Und bezeichnet habe so das ich auch keine probleme mehr nachher hab sie zu zuordnen. (also welche Dateien ich includieren muss , oder auf welche zeichen zuachten sind, an welcher stelle im code man den befehl einsetzten darf,nach klassen unterteilt also ob der befehl zur gl gehört oder für nen windoofs fenster gebraucht wird usw usw,halt schon mühe mit gemacht "es" zu verstehen ;)....halt nen "eigenes" newbie tutorial für holzköpfe
)
Hab auch in den programmen selber absolut alles bezeichnet und ihrgend welchen funktionen "die man am Bildschirm sieht,oder auch nicht aber wichtig sind" zugeordnent ,um immer wieder bei bedarf drauf zugreifen zu können!Da man sich gerade in der anfangsphase nicht alles merken kann ,da man mit neuen informationen überflutet wird.
Bis sie aber newbie gerecht ist und ich die meisten befehle erklärt habe dürfte noch einiges an zeit (jahre) ins land ziehen...(ohne einfach copy + paste zu benutzen, da ich sie gerne mit eingenen worten erklären möchte. So gut es geht ohne "Fachchinesisch")
Denke das es sowas bestimmt schon gibt, kennt einer einen link ?
---------------------------------------------------------
Zum tausentsten mal editiertfloat step = 20; /*bestimmt die geschwindigkeit der Schwingung/ 20 default*/ if(d) { if(s <= 1000.0f) /*Hat was mit dem Schwingen der feder zu tun ,der Steigungsabstand wird mit definiert*/ s += step; else d = false; } else { [b]if(s >= 500.0f)[/b] /*Definitive bestimmt der befehl wie weit die feder zu schwingen hat! desto niedrieger die eingabe dersto größer schwingt sie*/ [b]s -= step; else d = true; } float rad; glBegin(GL_LINE_STRIP); for(float a = 0.0f; a <= 2000.0f; a += 2.0f / 1)[/b] /*Über die 2000 lasst sich der einzug einstellen(länge des striches o. Länge des einzuziehende materials), 2.0 lassen sich kanten in der engine entfernen, bei einer eingabe über 50 wird die Feder zum Stern! */ { [b]glColor3f(1.0f/1000.0f*a + 0.5f, 0.0f, 0.0f); [/b]/* Sehr interessante Einstellung für die Farben der Feder, 1.0f bewirken eine deutliche darstellung der Feder während ein herabsetzen des befehles die feder transparent erscheinen lässt und bei 1000 die länge des transparenten berreiches definiert wird*/ [b]rad = (3.14159f * a) / 180.0f;[/b] /*Über diese funktion lässt dich der windungs abstand regulieren /180.0f original)*/ [b]glVertex3f(cos(rad), sin(rad), a / s);[/b]
Kann ich bei
[b]if(s <= 1000.0f)[/b] /*Hat was mit dem Schwingen der feder zu tun ,der Steigungsabstand wird mit definiert*/ [b]s += step; else d = false;[/b]
Nicht versuchen das mit
[b]for(float a = 0.0f; a <= 2000.0f; a += 2.0f / 1) [/b]/*Über die 2000 lasst sich der einzug (länge des zu verwendenen materials) einstellen, 2.0 lassen sich kanten in der engine entfernen, bei einer eingabe über 50 wird die Feder zum Stern! */
zu kombienieren?
Das ich im sagen kann das er bei 800 zb Steigungsabstand 20 in der Feder benutzt und ab dem punkt 800 bis 1000 dann 30 und ab 1000 - 2000 dann zb. 50 am besten auch mit defination für den durchmesser! .... dann könnte man den aufbau der Feder anders anzeigen lassen wie nur zylindrisch! Dann wäre sie ja schon mal konisch, mit veränderten durchmessern!
Zur besseren lesbarkeit hab ich den code nachher fett anzeigen lassen.
-
Hallo ich nochmal, hab mich mal nen bisschen im forum umgesehen nach einer lösung zum "verkleinern" der feder , ich bin dabei auf den befehl
glTranslatef( 0, 0,-6);
gestoßen,
wenn ich den anwende wird bei mir garnix mehr angezeigt, dh. die grafik ausgabe ist schwarz ....hab auch schon die parameter verändert , aber es bringt nur nen bisschen , die sicht scheint zu klein zu sein , die feder taucht einfach in den hintergrund ein und ist weg... wie kann ich die Sichtweite im opengl fenster vergrößern? muss ich jetzt auch mit zusätzlichen licht quellen arbeiten ?
Nach dem eintauchen in die rückwnd kommt die feder auch nicht wieder ....hmm hatte den wert mal von -6 einfach auf -0.02 gesetzt.
-------------------------------------------------------
Edit :
-------------------------------------------------------Ok das problem mit dem befehl konnte ich selber lösen, glaux.h gedownloadet und hinzugefügt, funnst gut, aber Feder verschwindet immer noch im hintergrund, jemand einen vorschlag?
-
glScalef(x, x, x); --> bis ja im Raum. und f für float.
für glScale wird noch glEnable(GL_NORMALIZE); bgenötigt
[hast du eine icq Nummer? dann können wir uns ja mal unterhalten?]
-
glTransletef(x, y, z); verschiebt deine Feder
-
Ok, jo ich denke über icq ist echt besser wie das forum voll zu spammen
ICQ: 133F1055 (mal was anderes ;)). nick in icq Source SuxX
-
-psy- schrieb:
denke das es für mich noch viel zu früh ist mich an opengl zu wagen :D.
Also wenn ich das hier so lese
-psy- schrieb:
Mehr gl header hab ich auch nicht im Ordner drin.
Könnte die deklarierung so aussehen?
glScale(x(y(z);
denke ich das auch...
Kannst froh sein, daß Tc++H Dir so fleissig antwortet, sonst hätte rapso bestimmt schon abgeschlossen... :p
Disclaimer: Dies ist kein persönlicher Angriff.
-
naja, solange kein flame da ist, es mit graphik zu tun hat und OT ist halt ich den maulkorb zurück...;)
-
Naja, ein paar andere der "Ich benutze einfach mal glTranslate() ohne zu wissen was es macht. Helft mir!"-Threads hast Du schon geclosed gehabt, um Flames vorzubeugen!
rapso schrieb:
naja, solange kein flame da ist, es mit graphik zu tun hat und OT ist halt ich den maulkorb zurück...;)
Interessant, und vor allem so eindeutig, daß Du sowohl für "Off-Topic" als auch das exakte Gegenteil "On-Topic" die gleiche Abkürzung "OT" nutzt...
-
Sgt. Nukem schrieb:
Naja, ein paar andere der "Ich benutze einfach mal glTranslate() ohne zu wissen was es macht. Helft mir!"-Threads hast Du schon geclosed gehabt, um Flames vorzubeugen!
meist nachdem schon ein flame drinne war, den ich dann gelöscht hatte, zumeist merkt ihr wohl einfach nicht, wenn ich sowas lösch. einfach prewentiv close ich erstmal nicht, kann ja sein dass eine noch so n00bhafte frage von jemandem gerne beantwortet wird wie man hier am thread ja sehen kann.
manche Threads die nichts mit diesem subforum zu tun haben, aber ungeflamet beantwortet werden verschiebe ich auch nicht... wenn er nicht beantwortet oder geflamet worden wäre, hätte ich den thread verschoben.
Sgt. Nukem schrieb:
rapso schrieb:
naja, solange kein flame da ist, es mit graphik zu tun hat und OT ist halt ich den maulkorb zurück...;)
Interessant, und vor allem so eindeutig, daß Du sowohl für "Off-Topic" als auch das exakte Gegenteil "On-Topic" die gleiche Abkürzung "OT" nutzt...
da setz ich einfach auf die semantikfähigkeit die die meisten haben. "Hört auf OT zu sein" und "bleibt bitte OT" sind trotz gleicher abkürzung verständlich denk ich mir.
jetzt bin ich ganz OT geworden...
-
rapso schrieb:
Sgt. Nukem schrieb:
Naja, ein paar andere der "Ich benutze einfach mal glTranslate() ohne zu wissen was es macht. Helft mir!"-Threads hast Du schon geclosed gehabt, um Flames vorzubeugen!
meist nachdem schon ein flame drinne war, den ich dann gelöscht hatte, zumeist merkt ihr wohl einfach nicht, wenn ich sowas lösch.
Hmm...wie auch?!
rapso schrieb:
manche Threads die nichts mit diesem subforum zu tun haben, aber ungeflamet beantwortet werden verschiebe ich auch nicht...
Wobei (um jetzt völlig OT zu werden) man sich wieder mal korinthenkackend streiten kann, ob das wirklich nicht hier hin gehört... Schließlich heißt das Forum "Spiele-/Grafikprogrammierung".
Und eine nötige aber nicht mitgelinkte Bibliothek ist wohl ein sehr häufiges Problem beim Programmieren.
Zudem kann man nicht abstreiten, daß d3d9.lib eine Spiele- oder zumindest Grafikbibliothek ist...rapso schrieb:
da setz ich einfach auf die semantikfähigkeit die die meisten haben. "Hört auf OT zu sein" und "bleibt bitte OT" sind trotz gleicher abkürzung verständlich denk ich mir.
Das stimmt sicher.
Aber was, wenn Du die Leute mal ausnahmsweise zum Offtopic-Sein anstacheln willst...?!?! Tja, Scheisse is'!
-
Sgt. Nukem schrieb:
Also wenn ich das hier so lese.
Kannst froh sein, daß Tc++H Dir so fleissig antwortet, sonst hätte rapso bestimmt schon abgeschlossen... :pDisclaimer: Dies ist kein persönlicher Angriff.
Bin ich auch , ich verstehe ja auch das ihr als "alte hasen" keine lust auf solche fragen habt , da sie immer und immer gestellt werden !
und wie ich fragen konnte wie man deklariert weiss ich auch nicht
,total hinterm mond
Ihr habt wirklich ein paar gute links und tuts hier im forum , werde auch erstmal die mühe machen und versuchen die antwort über diese zu finden , statt bei jeden problemchen euch zu belagern , aber manchmal ist es einfach von vorteil wenn man jemanden fragt der das schon mal gemacht hat, denn so lernt man am schnellsten ... zu mindestens ich
An dieser stell erstmal danke für eure hilfsbereitschaft und das ihr mich nicht sofort an den pranger gestellt habt !
wäre mir lieb wenn das thread erstmal offen bliebe , denn fals ich nochmal ne frage hab kann ich sie hir noch mit reinschreiben ohne mit schlechtem gewissen ein neues tread über die selbe abhandlung zu öffnen !
ThanX & GreeZ David.K
-
Sgt. Nukem schrieb:
Hmm...wie auch?!
eben, ihr könnt garnicht alles verfolgen was passiert, und selbst wenn, wisst ihr nicht weshalb ich etwas mache. das solltet jeder bedenken wenn er sich darüber ein urteil bildet, ob und wieso ich meine moderator macht (miss)brauche.
Sgt. Nukem schrieb:
Wobei (um jetzt völlig OT zu werden) man sich wieder mal korinthenkackend streiten kann, ob das wirklich nicht hier hin gehört... Schließlich heißt das Forum "Spiele-/Grafikprogrammierung".
Und eine nötige aber nicht mitgelinkte Bibliothek ist wohl ein sehr häufiges Problem beim Programmieren.
Zudem kann man nicht abstreiten, daß d3d9.lib eine Spiele- oder zumindest Grafikbibliothek ist...diese korintenkackerei muss ich mir vorwerfen lassen wenn ich es verschiebe.
wenn man es hier leichter lösen kann als in einem anderen subforum, weil es hier schon zum 0xff mal gefragt wurde und die antwort drinne steht bevor ich den thread sehe, lösch ich es nicht und verschieb dannSgt. Nukem schrieb:
Aber was, wenn Du die Leute mal ausnahmsweise zum Offtopic-Sein anstacheln willst...?!?! Tja, Scheisse is'!
das mache ich grundsätzlich nur in foren in denen ich kein mod bin *fg*
@-spy-
du darfst fragen stellen wenn du fragen hast. niemand hier ist gezwungen darauf einzugehen, wenn jemand also ein problem mit einem thread hat, dann soll er den einfach ignorieren. du mußt dann im gegenzug bedenken, je kompetenter du eine frage stellst und je detailierter du sagst wobei es hackt, desto eher wird dein thread nicht ignoriert.
-
was is das für ein tut aus dem du das hast, könntest mal nen link posten?