Zur Boardunity Forenstartseite

Zurück   Boardunity & Video Forum » Technik » Programmierung und Datenbanken

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1  
Alt 22.01.2009, 17:13
neues Mitglied
 
Registriert seit: 01.2009
Beiträge: 1

Bowlingbahn in GroIMP


Hallo zusammen,

ich bastel gerade mit GroIMP rum, das ist ein auf Java basierendes OpenSourceProgramm, in welchem man Wachstumsprozesse simulieren kann. Aktuell hab ich versucht, mir mal eine
Bowlingbahn zusammen zu schustern. Die Bahn steht, die Kugel rollt und die Kegel stehen...
und stehen. Meine Frage: Wie kann ich eine Kollisionsabfrage programmieren?

Hier ist mein Quellcode, die Shaders fehlen da zwar, aber das ist ja nicht sooo wichtig:

Zitat:
module Cube;
module Pins;
module Ball;
module Schleife;

const Shader bahn = shader("bahn");
const Shader kugel = shader("kugel");
const Shader kegel = shader("kegel");

int i=0;

protected void init ()
[
Axiom ==>

//die Bahn an sich
[Cube

Box(15,4,0.4).(setShader(bahn)) Translate(2.5,0.1,-15) //RU(270) RL(90)
Box(15,1,0.2) Translate(-5,0,-15)
Box(15,1,0.2)

]

//die Kegel, aus jeweils 3 Körpern zusammengesetzt und mit translate positioniert
[Pins RU(270) RL(90) Translate(15,0,0)

[Translate(-1,0.4,0.4)

Frustum(1,0.2,0.1).(setShader(kegel)) RL(180) Translate( 0,0,1)
Frustum(0.3,0.2,0.2).(setShader(kegel)) Translate(0,0,-1.4)
Sphere(0.2).(setShader(kegel))

]

[Translate(-1,1.2,0.4)

Frustum(1,0.2,0.1).(setShader(kegel))RL(180) Translate( 0,0,1)
Frustum(0.3,0.2,0.2).(setShader(kegel)) Translate(0,0,-1.4)
Sphere(0.2).(setShader(kegel))
]

[Translate(-1,-0.4,0.4)

Frustum(1,0.2,0.1).(setShader(kegel))RL(180) Translate( 0,0,1)
Frustum(0.3,0.2,0.2).(setShader(kegel)) Translate(0,0,-1.4)
Sphere(0.2).(setShader(kegel))
]

[Translate(-1,-1.2,0.4)

Frustum(1,0.2,0.1).(setShader(kegel))RL(180) Translate( 0,0,1)
Frustum(0.3,0.2,0.2).(setShader(kegel)) Translate(0,0,-1.4)
Sphere(0.2).(setShader(kegel))
]

[Translate(-1.7,-0.8,0.4)

Frustum(1,0.2,0.1).(setShader(kegel))RL(180) Translate( 0,0,1)
Frustum(0.3,0.2,0.2).(setShader(kegel)) Translate(0,0,-1.4)
Sphere(0.2).(setShader(kegel))
]

[Translate(-1.7,0,0.4)

Frustum(1,0.2,0.1).(setShader(kegel))RL(180) Translate( 0,0,1)
Frustum(0.3,0.2,0.2).(setShader(kegel)) Translate(0,0,-1.4)
Sphere(0.2).(setShader(kegel))
]

[Translate(-1.7,0.8,0.4)

Frustum(1,0.2,0.1).(setShader(kegel))RL(180) Translate( 0,0,1)
Frustum(0.3,0.2,0.2).(setShader(kegel)) Translate(0,0,-1.4)
Sphere(0.2).(setShader(kegel))
]

[Translate(-2.4,-0.4,0.4)

Frustum(1,0.2,0.1).(setShader(kegel))RL(180) Translate( 0,0,1)
Frustum(0.3,0.2,0.2).(setShader(kegel)) Translate(0,0,-1.4)
Sphere(0.2).(setShader(kegel))
]

[Translate(-2.4,0.4,0.4)

Frustum(1,0.2,0.1).(setShader(kegel))RL(180) Translate( 0,0,1)
Frustum(0.3,0.2,0.2).(setShader(kegel)) Translate(0,0,-1.4)
Sphere(0.2).(setShader(kegel))
]

[Translate(-3.1,0,0.4)

Frustum(1,0.2,0.1).(setShader(kegel))RL(180) Translate( 0,0,1)
Frustum(0.3,0.2,0.2).(setShader(kegel)) Translate(0,0,-1.4)
Sphere(0.2).(setShader(kegel))
]

]

//die Bowlingkugel
[Ball

Translate(0,-0.7,1.5)

Sphere(0.5).(setShader(kugel))

]

;


]

public void run ()

//Schleife, die dafür sorgt das die Kugel sich immer weiter die z-Achse entlangbewegt, bis i>=85,
//dann stoppt sie und die Kugel bleibt stehen
[
Ball ==> M(0.07) Schleife;

Schleife ==> M(0.07) Ball

if (i < 85) (Schleife {i++;} )

else {break;}

;
]

Die Kegel sollen einfach nur umfallen in dem Moment wo die Kugel sie erreicht. Also ganz einfach
gehalten. Es wär klasse, wenn mir da jemand weiterhelfen könnte.

Den Quellcode werd' ich noch vereinfachen, sobald alles funktioniert wie's soll'

Ich danke (allein schon für's lesen :P)

Mit besten Grüßen,

Muny
Antwort


Stichworte
groimp, java, kollisionsabfrage


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.
Gehe zu






1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25