AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

3D Funktion

Ein Thema von Cicaro · begonnen am 10. Aug 2011 · letzter Beitrag vom 13. Aug 2011
Antwort Antwort
Cicaro

Registriert seit: 9. Feb 2005
285 Beiträge
 
Delphi 7 Personal
 
#1

3D Funktion

  Alt 10. Aug 2011, 18:13
Hallo.

Hier sind eher die Mathematiker gefragt. Ich kenn mich mit 3D Funktionen nicht sonderlich gut aus aber würde gern was dazulernen. Ich suche im Grunde eine Funktion, die folgende Eigenschaften besitzt:

Vorgaben:
- Funktion sollte sich aus Sinus und Kosinus zusammensetzen (nicht stetig steigend oder fallend, und keine Grenzwerte)
- Funktion sollte sich beliebig jedoch zwischen 2 festen Werten bewegen (zB -1 und 1, mich interessiert eigentlich genau 1 Wert, der von 2 Variablen abhängt)
- x und y sind die beiden Variablen und z das Funktionsergebnis
- Funktion sollte in etwa wie eine Wasseroberfläche aussehen (kann beliebig krum sein, jedoch ohne großartige Brüche)


Ich hoffe das reicht an Parametern!
Ihr dürft mich gern nach Strich und Faden belehren. Ich bitte euch zu schlau-meiern!!
//Edit: Und kennt jemand Freeware-Tools zum veranschaulichen solcher Funktionen ?

MfG

Geändert von Cicaro (10. Aug 2011 um 20:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

AW: 3D Funktion

  Alt 10. Aug 2011, 18:26
Hmmmm, da gibt's mehrere Möglichkeiten.

Eine sehr einfache ist z.B. diese hier:
http://www.wolframalpha.com/input/?i...9%2Bsin%28y%29
+ Hat ein paar Wellen
- Für eine Wasseroberfläche viel zu regelmäßig

Ob die jetzt gut oder schlecht ist kommt auch ein bisschen drauf an, was du damit machen willst
  Mit Zitat antworten Zitat
Sinderion

Registriert seit: 23. Nov 2007
Ort: Oberösterreich
19 Beiträge
 
Delphi XE7 Architect
 
#3

AW: 3D Funktion

  Alt 10. Aug 2011, 18:57
Puh, das ist schwieriger als gedacht!

Mein (zurzeit) bester Versuch:

10*Sin[(x + Sin[y])]+10*Sin(y + Cos[x])]

Das größte Problem ist wohl, dass man mit z = f[x,y] keine sich brechenden Wellen (heißt das so?) erhalten kann.
Mit Parametrischen Funktionen könnte man das ev. besser hinbekommen, bin mir aber nicht sicher
Daniel
  Mit Zitat antworten Zitat
Cicaro

Registriert seit: 9. Feb 2005
285 Beiträge
 
Delphi 7 Personal
 
#4

AW: 3D Funktion

  Alt 11. Aug 2011, 01:53
Das größte Problem ist wohl, dass man mit z = f[x,y] keine sich brechenden Wellen (heißt das so?) erhalten kann.
Brechende Wellen sind mit Funktionen allgemein nicht möglich, da Funktionen für jede Eingabe immer nur einen Funktionswert haben können (sonst wären es keine Funktionen).

Ich habe gerade ganz grob gesagt z = Sin(x) + Cos(y) ausprobiert und es sieht sehr wellig aus. Ich vermute ich muss sehr viel mehr sin und cos einmischen und x und y noch etwas strecken/stauchen/etc.

Und das führt mich wohl zu "Perlin noise" ...
Kennt sich jemand damit aus ? Oder hat jemand Lust etwas damit zu arbeiten ?
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#5

AW: 3D Funktion

  Alt 11. Aug 2011, 09:21
Es wäre auch nicht unwichtig zu wissen, was für ein Wasser dir so vorschwebt. Ein ruhiger Tümpel verhält sich doch etwas anders als ein windiger Strand, oder mitten im Ozean. Vom Grundsatz her ist Perlin-Noise praktisch nie falsch, aber da gibt's sooo viele Wege Feintuning zu betreiben.
Da Perlin-Noise eine absolute Standardaufgabe im Bereich Grafik ist, finden sich dazu Haufen an Dingen im Netz zum Verständnis. Das macht wenig Sinn hier zu wiederholen.
Zitat:
Oder hat jemand Lust etwas damit zu arbeiten ?
Ich hoffe doch du
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Cicaro

Registriert seit: 9. Feb 2005
285 Beiträge
 
Delphi 7 Personal
 
#6

AW: 3D Funktion

  Alt 11. Aug 2011, 13:40
Zitat:
Oder hat jemand Lust etwas damit zu arbeiten ?
Ich hoffe doch du
Ja meine Begeisterung dafür hält sich in Grenzen. Ich arbeite eigentlich an der Engine eines Spiels und benötige diesen kleinen Umweg für die "Weltgenerierung". Aber falls jemand Welten nach seinen Wünschen in einem Spiel generieren möchte, wäre ich dafür dankbar und würde es natürlich durch Namensnennung zu würdigen wissen (allerdings ist das ein Projekt zu Lernzwecken etc.).

Achja es geht hier nicht ums Wasser, eher um eine (möglichst) extrem zufällige Weltgenerierung. ^^

Geändert von Cicaro (11. Aug 2011 um 13:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#7

AW: 3D Funktion

  Alt 11. Aug 2011, 14:32
Stellt sich noch die Frage: Machst du "nur" Oberflächengenerierung oder etwas in die richtung wie MineCraft(Tunnelsystem, Untergrundgenerierung)



MFG
Memnarch
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#8

AW: 3D Funktion

  Alt 11. Aug 2011, 14:57
Und da findet sich unter Bei Google suchenheightmap algorithm nichts?
Eine nette Linksammlung gibt es z.B. hier.

EDIT: noch einfacher Algorithmus zum schnell implementieren.
Code:
Eingabe:
  L
  A Anfangsvariation
  D Variationsdämpfung (<= 1 für sinnvolle Ergebnisse)
Ausgabe:
  Heightmap L (2^L mal 2^L)
Variablen:
  V Variation
Ablauf:
  L := ein "Teilstück" mit der Größe 2^L mal 2^L
  V := A
  solange Teilstücke größer 1
    für jedes Teilstück T von L
      teile T in 4 gleichgroße neue Teilstücke T_1 bis T_4.
      für die neuen Teilstücke T_i tue
        T_i.höhe := T_i.höhe + 2*zufall(0 bis 1)*V - V
    V := A*V
Wenn dir das Ergebnis zu verrauscht aussieht, kannst du es noch glätten.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.

Geändert von BUG (11. Aug 2011 um 15:21 Uhr)
  Mit Zitat antworten Zitat
Cicaro

Registriert seit: 9. Feb 2005
285 Beiträge
 
Delphi 7 Personal
 
#9

AW: 3D Funktion

  Alt 13. Aug 2011, 00:04
Stellt sich noch die Frage: Machst du "nur" Oberflächengenerierung oder etwas in die richtung wie MineCraft(Tunnelsystem, Untergrundgenerierung)
Naja ich sehe die größte Schwierigkeit in der Oberflächengenerierung. Wenn man sich Minecraft anschaut, so kann man im Grunde die Welt in 2 Teile aufteilen, Luft und Boden. Dann setzt man eine Höhe für den Meeresspiegel, füllt alles Luft unter dem Meeresspiegel mit Wasser auf und setzt auf der höchsten Bodenschicht Gras hin. Schließlich fügt man rein zufällig zusammenhängende Erze in den Boden ein und schon hat man eine Minecraft Welt. Tunnel ist allerdings auch ein Problem, das meiner Meinung nach mit einem ähnlichen Prinzip wie bei der Oberfläche gelöst werden kann.

Wie gesagt ich arbeite an der Engine und versuche gerade die Welt "unendlich" groß zu machen.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#10

AW: 3D Funktion

  Alt 13. Aug 2011, 00:08
Wenn es zumindest ein wenig abwechslungsreich und "nett" sein soll, wirst du um Noises und ggf. fraktal-ähnliche Konstrukte nicht herum kommen. Man schaue sich z.B. Bei Google suchenTerragen an: Im Grundsatz alles Perlin-Noise.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:42 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