#1 30.01.2007 19:08:09

simon
ProMember
Ort: Düsseldorf
Registriert: 03.06.2006
Beiträge: 168

Move Point Relative To Triangle

so wie im Thema  - wollte mal eine Procedur schreiben die einen Punkt immer  so bewegt, wie ein Dreieck bewegt wird - leider funzt die Procedure nicht so wie sie sollte hmm    :doof: 
dabei ist nur die Position des Punktes wichtig - nicht seine Drehung - und er muss nicht immer 100% korrekt bewegt werden, da es für ein 2D J&R ist.
hat jemand eine Idee??

Code: delphi

procedure movepointrelativetotriangle(oldtri, newtri : ttriangle);
var
dst,rad : single;
begin
//point1
  dst := math.getdistance2d(oldtri.a.x,oldtri.a.y, newtri.a.x,newtri.a.y);
  rad := getrad(newtri.a.y - oldtri.a.y,newtri.a.x-oldtri.a.x);
  test_point.x := test_point.x + round(sin(rad)*(dst));
  test_point.y := test_point.y + round(cos(rad)*(dst));
//point2
  dst := math.getdistance2d(oldtri.b.x,oldtri.b.y, newtri.b.x,newtri.b.y);
  rad := getrad(newtri.b.y - oldtri.b.y,newtri.b.x-oldtri.b.x);
  test_point.x := test_point.x + round(sin(rad)*(dst));
  test_point.y := test_point.y + round(cos(rad)*(dst));
//point3
  dst := math.getdistance2d(oldtri.c.x,oldtri.c.y, newtri.c.x,newtri.c.y);
  rad := getrad(newtri.c.y - oldtri.c.y,newtri.c.x-oldtri.c.x);
  test_point.x := test_point.x + round(sin(rad)*(dst));
  test_point.y := test_point.y + round(cos(rad)*(dst));
{test_point.X
test_point.y}
end;



btw die  Procedur wird so aufgerufen:

Code: delphi

triold.a.x :=  round(punkte[1].posx);
triold.a.y :=  round(punkte[1].posy);
triold.b.x :=  round(punkte[2].posx);
triold.b.y :=  round(punkte[2].posy);
triold.c.x :=  round(punkte[3].posx);
triold.c.y :=  round(punkte[3].posy);

if allow_physics_sim then do_physics;

trinew.a.x :=  round(punkte[1].posx);
trinew.a.y :=  round(punkte[1].posy);
trinew.b.x :=  round(punkte[2].posx);
trinew.b.y :=  round(punkte[2].posy);
trinew.c.x :=  round(punkte[3].posx);
trinew.c.y :=  round(punkte[3].posy);
movepointrelativetotriangle(triold,trinew);

//test_point.X und test_point.Y ist halt der Punkt;)

grrr

Offline

 

#2 30.01.2007 19:12:45

Coolcat
ProGuru
Ort: Aachen, NRW
Registriert: 24.01.2005
Beiträge: 2780
Web-Seite

Re: Move Point Relative To Triangle

Zitat:

dabei ist nur die Position des Punktes wichtig - nicht seine Drehung

Ein Punkt hat keine Drehung.

Zitat:

leider funzt die Procedure nicht so wie sie sollte

Was soll sie den machen?

Coolcat


My software never has bugs. It just develops random features.

Offline

 

#3 30.01.2007 19:27:38

simon
ProMember
Ort: Düsseldorf
Registriert: 03.06.2006
Beiträge: 168

Re: Move Point Relative To Triangle

das so ein Punkt keine Drehung hat ist mir klar;)  -sorry hatte was anderes im Kopf;)
ok habs falsch erklärt tongue
also meine Spielwelt besteht aus Dreiecken jest ist es so, dass die meisten sich bewegen - die Spielfigur soll sich zB an einem Dreieck festhalten können, dass sie dreht um so zB an höhere Ebene zu gelangen. Fals das immer noch nicht klar ist werde ich das mal als Bild anhängen smile


grrr

Offline

 

#4 31.01.2007 08:47:23

JorEl
ExtremeMember
Registriert: 29.01.2005
Beiträge: 894

Re: Move Point Relative To Triangle

Ich verstehe das Problem auch noch nicht so ganz - weisst du schon wie du feststellst, ob sich deine Spielfigur gerade an einem Dreieck festhält? Wenn du diese Information hast, dann brauchst du doch nur an diesem Zeitpunkt den Punkt auf dem Dreieck selbst berechnen (im model space) und dann transformierst du diesen Punkt bei Translation/Rotation/... des Dreiecks jeweils mit der selben Matrix.

JorEl


Jesus hat gesagt - selig sind die, die da Leid erfahren, denn sie sollen getröstet werden... Ford Prefect hat gesagt - es ist unheimlich wichtig, dass wir miteinander reden und einen trinken.

Offline

 

#5 31.01.2007 18:29:11

Chris
ExtremeMember
Ort: Erlangen, Bay
Registriert: 24.01.2005
Beiträge: 694
Web-Seite

Re: Move Point Relative To Triangle

du willst die position deine Spielfigur einem Block anpassen auf dem sie Steht und der sich dreht?!

wenn das stimmt sollte es nicht so schwer sein eine funktion dafür zu schreiben.

mfg Chris


Nimm meinen Rat an - ich brauch ihn sowieso nicht

Offline

 

#6 01.02.2007 11:17:09

DerPeer
GodlikeMember
Ort: Berlin
Registriert: 04.02.2005
Beiträge: 1291

Re: Move Point Relative To Triangle

Ich vermute, er möchte einen Punkt A um einen Punkt B drehen.
Um welche Achse genau und wie weit, das läßt sich aus Drehung eines ReferenzDreiecks ablesen, von dem die Drehung sozusagen abgeguckt werden soll.
Wie das Dreieck zu den beiden Punkten positioniert ist, ist egal.

Ist das richtig?
Wenn ja: In welcher Weise hast Du die Drehung des Dreiecks gespeichert? Als eine Rotationsmatrix? Als 2 Winkel? Als Winkel und Achse?

DerPeer

Offline

 

#7 01.02.2007 14:35:12

simon
ProMember
Ort: Düsseldorf
Registriert: 03.06.2006
Beiträge: 168

Re: Move Point Relative To Triangle

ok also das ganze sieht so aus:
(wie shcon beschrieben) der Level besteht nur aus 3Ecken - jedes 3Eck besteht aus 3 Punken, die mit 3 Linien zusammen gehalten werden ich benutze das Array so wie hier: http://delphidev.de/phpBB2/viewtopic.php?t=1274
so im Spiel kann man sich an einem 3Eck festhalten - Problem ist jetzt, dass sich die Triangles bewegen können so wie hier zB:
http://img411.imageshack.us/img411/9315/triqo6.jpg
(das hell blaue Kreutz ist der Player)
:?


grrr

Offline

 

#8 01.02.2007 15:32:47

Coolcat
ProGuru
Ort: Aachen, NRW
Registriert: 24.01.2005
Beiträge: 2780
Web-Seite

Re: Move Point Relative To Triangle

Du brauchst dem Player doch einfach nur eine Transformationsmatrix geben die relativ zum Dreieck ist.

=> Playermatrix * NeueDreiecksmatrix = NeuePlayerMatrix


My software never has bugs. It just develops random features.

Offline

 

#9 01.02.2007 17:48:06

DerPeer
GodlikeMember
Ort: Berlin
Registriert: 04.02.2005
Beiträge: 1291

Re: Move Point Relative To Triangle

Vielleicht kennt er nur die 3 Positionen der 3 Vertices eines Dreiecks, dann müßte man sich die Matrix erst erstellen.

Du möchtest also, das eine Relativposition des Punktes zu einem Dreieck eingehalten wird, egal was das Dreieck tut, richtig?

Wenn Du das Dreieck bewegst, WIE genau gewegst Du das? Und wie zeichnest Du das Dreieck? Zeig mal die Codezeilen!

DerPeer

Offline

 

#10 01.02.2007 18:27:18

Coolcat
ProGuru
Ort: Aachen, NRW
Registriert: 24.01.2005
Beiträge: 2780
Web-Seite

Re: Move Point Relative To Triangle

Zitat:

dann müßte man sich die Matrix erst erstellen.

Das kann man mit der tollen Zauberfunktion D3DXMatrixRotationVec machen  :p
http://www.delphidev.de/phpBB2/viewtopic.php?t=69


My software never has bugs. It just develops random features.

Offline

 

#11 01.02.2007 18:41:43

DerPeer
GodlikeMember
Ort: Berlin
Registriert: 04.02.2005
Beiträge: 1291

Re: Move Point Relative To Triangle

Zauberfunktionen finde ich besonders toll!  big_smile

Hast Du auch die D3DXMatrixDieAllesSchönMacht(m)
und die SetRenderState(D3DRS_NochSchneller, 1)
- Funktionen?

DerPeer

Offline

 

#12 01.02.2007 19:37:44

simon
ProMember
Ort: Düsseldorf
Registriert: 03.06.2006
Beiträge: 168

Re: Move Point Relative To Triangle

naja eigentlich wollte ich das ja selber machen (diese ZAuberfunktion)
möchte nämlich kein Dx benutzen:)


grrr

Offline

 

#13 01.02.2007 20:45:53

Coolcat
ProGuru
Ort: Aachen, NRW
Registriert: 24.01.2005
Beiträge: 2780
Web-Seite

Re: Move Point Relative To Triangle

Öhm die Funktion macht nix anderes als einfach eine Basis aus drei zueinander rechtwinkeligen Vektoren zu erstellen und in die Matrix zu schreiben.

@DerPeer:
SetRenderState(D3DRS_ACTIVATESECRETHIGHSPEEDOPTION, 1)
SetRenderState(D3DRS_ULTRAQUALITYSHADER, 1)
SetRenderState(D3DRS_ULTRASPEEDSHADER, 1)
Braucht aber natürlich entsprechend modifizierte DX-Header. smile

Coolcat


My software never has bugs. It just develops random features.

Offline

 

#14 01.02.2007 23:09:57

JorEl
ExtremeMember
Registriert: 29.01.2005
Beiträge: 894

Re: Move Point Relative To Triangle

Zitat:

Braucht aber natürlich entsprechend modifizierte DX-Header

Ich werde sie gleich morgen aktualisieren  big_smile

JorEl


Jesus hat gesagt - selig sind die, die da Leid erfahren, denn sie sollen getröstet werden... Ford Prefect hat gesagt - es ist unheimlich wichtig, dass wir miteinander reden und einen trinken.

Offline

 

#15 02.02.2007 09:15:32

simon
ProMember
Ort: Düsseldorf
Registriert: 03.06.2006
Beiträge: 168

Re: Move Point Relative To Triangle

dann warte ich bis Morgen:P


grrr

Offline

 

#16 02.02.2007 19:17:21

Dreamworld
UltraMember
Ort: Karlsruhe
Registriert: 06.12.2005
Beiträge: 368

Re: Move Point Relative To Triangle

Zitat:

Zauberfunktionen finde ich besonders toll!  big_smile

Hast Du auch die D3DXMatrixDieAllesSchönMacht(m)
und die SetRenderState(D3DRS_NochSchneller, 1)
- Funktionen?

DerPeer

:mrgreen:

Also die d3dx9 Funktion BuildEngineOnYourOwn(Traumwelt: TGendankenübertragung):TEngine ; darfste da auch nicht vergessen^^
Wenn die Header gemoddet hast, bitte bei mir melden  big_smile

Offline

 

Brett Fußzeile

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson