Ein Forum, in dem sich neue Clonk Entwickler untereinander austauschen können.
 
StartseiteStartseite  PortalPortal  FAQFAQ  SuchenSuchen  AnmeldenAnmelden  MitgliederMitglieder  LoginLogin  

Austausch | 
 

 Sin und Cos

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach unten 
AutorNachricht
Plueschtroll
Clonk
Clonk


Anmeldedatum : 08.08.08

BeitragThema: Sin und Cos   Sa Jan 03, 2009 10:24 pm

Hallo erstmal Smile.
ACHTUNG!Dieses Tutorial ist mein erstes.Ich werde es noch mehrmals überarbeiten müssen,damit es besser verständlich ist.Rückmeldungen, was ich verbessern sollte, sind erwünscht.

Schwierigkeit Like a Star @ heaven Like a Star @ heaven Like a Star @ heaven Like a Star @ heaven Like a Star @ heaven

In diesem Tutorial erkläre ich euch, wie man so einen Kreis, mittels Sinus und Cosinus, in die Landschaft zeichnet.Wer sich für Sinus und Cosinus interessiert und fit in Mathematik ist sollte den Wikipedia-Artikel lesen.Für alle anderen erkläre ich kurz was die "Funktionen" Sinus und Cosinus machen.

Als erstes zu den Argumenten die "Sin" und "Cos" brauchen,die Argumente sind bei beiden gleich.Das erste Argument "iAngel" gibt einen Winkel an,das zweite "iRadius" die Größe eines Kreisradius(das ist die Hälfte vom Durchmesser eines Kreises).Anhand dieser Argumente wird eine Zahl berechnet,wie zeigt dieser Graph.Obenlinks sehen wir den Winkel,links Sinus und unten Cosinus."Sin" und "Cos" berechnen nun aus dem Winkel die am Rand angezeigte Zahl.Bei 90°Grad gibt "Sin" also 1 und "Cos" 0 aus, bei 0°Grad ist es umgekehrt.Diese Zahl wird dann mit dem zweiten Argument multipliziert und das Ergebnis dann zurückgegeben.
Was bringt das überhaupt?
Mit Sin und Cos kann man Kreise erstellen.Denn die beiden Funktionen liefern einen anährenden Kreis wenn man sie für ganz viele Winkel berechnet.



So jetzt wissen wir wie Sin und Cos funktionieren und können damit einen Kreis erstellen.
Als erstes brauchen wir einen Funktionskopf:
Zitat :
global func DigFreeCircle(int iX,int iY,int iXRadius,int iYRadius,int iCircleLenght,int iPixel)
Das "global" zeigt,dass der Script überall verfügbar ist, genauso wie die normalen Funktionen z.B. "CreateObject"."func" steht für Funktion.In den Klammern stehen die Argumente,das int vor allen Argumenten zeigt das es alles "Integer" also Ganzzahlen sind,das 'i' kennzeichnet die einzelnen Argumente nochmals als Ganzzahl um die Übersicht zu verbessern.
Zitat :
{
var iSin,iCos;
for(var ih; ih < iCircleLenght;ih++)
{
Erstellt drei (noch) leere Behälter,mit den Namen "iSin","iCos" und "ih".Wie wir (hoffentlich Wink )gelernt haben steht das 'i' für eine Ganzzahl.Ausserdem startet eine "for" Schleife,die solange durchlaufen wird wie "ih" kleiner ist als iCircleLenght.Die Aufgabe der Schleife ist es, in einzelnen Stücken einen Kreis in die Landschaft zu graben."ICircleLenght" gibt dabei die Größe des Kreises in einem Winkel an,360 wäre ein ganzer Kreis,180 ein halber,90 ein viertel etc.
Zitat :
iSin = Sin(ih,iXRadius);
iCos = Cos(ih,iYRadius);
Weißt den Behältern "iSin" und "iCos" einen Wert zu."iSin" bekommt dabei den 'X' Wert eines Punktes auf der Kreisbahn und "iCos" den dazugehörenden 'Y' Wert.
Zitat :
DigFreeRect((iX+iSin),(iY+iCos),iPixel,iPixel);
}
}
Die eigentliche Funktion.DigFreeRect gräbt eine bestimmte Position frei.Das erste und zweite Argument geben die Position an wo etwas freigegraben werden soll.Wir haben dort, die gespeicherte Position der Kreisbahn in "iSin" und "iCos" + der Position von der linken, oberen Kartenecke in "iX" und "iY" eingesetzt.Der dritte und vierte Parameter geben die Seitenlängen des freigegrabenen Recktecks an.Dort haben wir "iPixel" eingesetzt.

Nochmal der gesamte Code:
Zitat :
global func DigFreeCircle(int iX,int iY,int iXRadius,int iYRadius,int iCircleLenght,int iPixel)
{
var iSin,iCos;
for(var ih; ih < iCircleLenght;ih++)
{

iSin = Sin(ih,iXRadius);
iCos = Cos(ih,iYRadius);

DigFreeRect((iX+iSin),(iY+iCos),iPixel,iPixel);
}
}
Nach oben Nach unten
Benutzerprofil anzeigen
Masterfox
General
General
avatar

Männlich Alter : 23
Anmeldedatum : 11.11.08

BeitragThema: Re: Sin und Cos   Sa Jan 03, 2009 10:34 pm

wow, erstmal respekt

Ich(und bestimmt viele andere werden es sich zwar wenn wir es anwenden möchten) noch ein/zwei-mal durchlesen, aber es ist meineserachtens ziemlich verständlich^^

Aber wirklich ziemlich gut, besonders die links gefallen mir Wink
Nach oben Nach unten
Benutzerprofil anzeigen
trike994
Konteradmiral
Konteradmiral


Männlich Alter : 23
Anmeldedatum : 10.12.08

BeitragThema: Re: Sin und Cos   Sa Jan 03, 2009 10:50 pm

jep, is doch eig. noch einigermaßen verständlich Very Happy
Nach oben Nach unten
Benutzerprofil anzeigen
Höfi
SFT
SFT
avatar

Männlich Alter : 22
Anmeldedatum : 20.10.08

BeitragThema: Re: Sin und Cos   Sa Jan 03, 2009 11:18 pm

Sin und Cos wollt ich eigentlich immer meiden, doch jetzt schau ichs mir doch mal an.
Nach oben Nach unten
Benutzerprofil anzeigen
Clonkzerhechsler
Oberst
Oberst
avatar

Männlich Alter : 22
Ort : Apenburg
Anmeldedatum : 29.12.08

BeitragThema: Re: Sin und Cos   So Jan 04, 2009 12:04 pm

Reife Leistung echt Hammer cheers cheers cheers cheers cheers
Nach oben Nach unten
Benutzerprofil anzeigen
Simsi
Staatssekretär
Staatssekretär
avatar

Männlich Alter : 24
Ort : Vaihingen/Enz
Anmeldedatum : 30.03.08

BeitragThema: Re: Sin und Cos   So Jan 04, 2009 3:53 pm

also sinus und cosinus zu erklären, so dass mans versteht hätt ich auch nicht besser machen können.
vllt dazu noch tan(), falls man das denn überhaupt irgendwo braucht (vllt im zusammenhang mit den TRI - xy szenarien)

_________________
Copy this into your signature to have it in your signature.
Nach oben Nach unten
Benutzerprofil anzeigen
Dragonclonk
Kadett
Kadett
avatar

Männlich Alter : 24
Ort : Lübeck
Anmeldedatum : 11.12.08

BeitragThema: Re: Sin und Cos   So Jan 04, 2009 9:40 pm

Schönes Tutorial. Cool
Aber die Schwierigkeitsstufe ist vllt etwas zu hoch angesetzt.
Nach oben Nach unten
Benutzerprofil anzeigen
Mozart
Kanzler
Kanzler
avatar

Männlich Alter : 24
Ort : Vaihingen/Enz
Anmeldedatum : 24.02.08

BeitragThema: Re: Sin und Cos   Mo Jan 05, 2009 12:12 am

du findest es müsste weniger als Like a Star @ heaven Like a Star @ heaven Like a Star @ heaven Like a Star @ heaven Like a Star @ heaven sein?
solange es nichts komplizierteres gibt würd ich des so lassen
Nach oben Nach unten
Benutzerprofil anzeigen http://www.funamfag.de
Umezawa
Feldmarschall
Feldmarschall


Männlich Alter : 23
Anmeldedatum : 30.12.08

BeitragThema: Re: Sin und Cos   Di Jan 20, 2009 11:36 pm

Endlich hab auch ich das mit sin, cos und tan verstanden Idea Danke! Very Happy
Nach oben Nach unten
Benutzerprofil anzeigen
Fredi333
Clonk
Clonk
avatar

Männlich Alter : 21
Ort : Rostock
Anmeldedatum : 06.05.09

BeitragThema: Re: Sin und Cos   Sa Jun 06, 2009 4:40 pm

Ich kann wirklich nur allen zustimmen das mit den links ist cool aber ein link zur doku wäre gut (natürlich auch bei zukünftigen tuts) Very Happy
Nach oben Nach unten
Benutzerprofil anzeigen http://www.klick-mich-blos-nicht.de.vu
Extremclonk
Staatsrat
Staatsrat
avatar

Männlich Ort : Am Anti-Spam-Limes
Anmeldedatum : 19.01.09

BeitragThema: Re: Sin und Cos   Di Jul 07, 2009 2:18 pm

Was noch sinnvoll wäre wenn auch noch erklärt wird wie man mit Sin und Cos Winkel und Drehungen in entsprechende Bewegungen umsetzten kann. Auch die Umkehrfunktionen könnten noch beschrieben werden da sie in der Doku relativ unklar sind.
Nach oben Nach unten
Benutzerprofil anzeigen
Pitri
Feldmarschall
Feldmarschall
avatar

Männlich Alter : 24
Ort : Karlsruhe
Anmeldedatum : 02.03.09

BeitragThema: Re: Sin und Cos   Mo März 22, 2010 8:38 pm

Extremclonk schrieb:
Was noch sinnvoll wäre wenn auch noch erklärt wird wie man mit Sin und Cos Winkel und Drehungen in entsprechende Bewegungen umsetzten kann.

Ha!Da hab ich vor kurzem was gemacht! Das ist mir aus heiterem Himmel eingefallen, als ich über den Einheitskreis nachgedacht habe: Ein Papierflieger, der Rotieren kann!

Code:
/*-- Papierflieger --*/

#strict 2

local FlySpeed;

func Launch(int iAngle, int iRotateDir, int iSpeed)
{
  if(!iAngle)      iAngle = Random(360);
  if(!iRotateDir)  iRotateDir = RandomX(10,50);
  if(!iSpeed)      iSpeed = 100;
  FlySpeed = iSpeed;

  if(Contained())
    Exit(this,0,0,iAngle,Cos(iAngle-90,iSpeed),Sin(iAngle-90,iSpeed),iRotateDir);
  else
  {
    SetXDir(Cos(iAngle-90,iSpeed));
    SetYDir(Sin(iAngle-90,iSpeed));
    SetRDir(iRotateDir);
    SetR(iAngle);
  }
  AddEffect("Flying",this,10,1,this);
  return(1);
}

func FxFlyingTimer()
{
  SetXDir(Cos(GetR()-90,FlySpeed));
  SetYDir(Sin(GetR()-90,FlySpeed));
  return(1);
}

FxFlyingTimer() sorgt dafür, dass er immer in die Rotationsrichtung fliegt Very Happy
Nach oben Nach unten
Benutzerprofil anzeigen http://www.clonk-fanpage.lima-city.de
Gesponserte Inhalte




BeitragThema: Re: Sin und Cos   

Nach oben Nach unten
 
Sin und Cos
Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach oben 
Seite 1 von 1

Befugnisse in diesem ForumSie können in diesem Forum nicht antworten
CNDG :: Fortgeschrittene :: Tutorials-
Gehe zu: