1

Imaginons que j'ai 2 sprites.

Si les 2 sprites se rencontre et que un pixel rencontre un autre, il y a moyen de retourner une valeur pour le savoir...
[edit]Edité par EtanneHunt le 30-10-2001 à 17:29:45[/edit]
Yahoooo le C.
Un jour l'ancien ti-fr v1.0 reviendra (avec les supers couleurs) :)

2

je pense que oui en utilisant les masks

3

Suffit de faire un banal pixel_test

4

1. Tu vérifies si les rectangles des sprites se superposent. S'ils ne se superposent pas, il n'y a pas collision, s'ils se superposent, tu continues.
2. Tu prends les masques inversés (noir = sprite, blanc = pas sprite - si tu as un masque normal, fais un NOT dessus).
3. Tu fais un AND des 2 masques en fonction de leur position (en remplissant à chaque fois avec des 0 les espaces où il n'y a qu'un seul des 2 rectangles de sprites).
4. Tu OR ensemble tout le résultat 4 octets par 4 octets de manière à avoir un long en résultat.
5. Tu testes le long. Si c'est 0, il n'y a pas collision, sinon il y a collision.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

5

OUAG!!!, merci...
Yahoooo le C.
Un jour l'ancien ti-fr v1.0 reviendra (avec les supers couleurs) :)

6

je réitère la question pour les collisions en 3D...
si j'ai les coordonnées de deux polygones rectangulaires:

|xa1,ya1,za1|
|xa2,ya2,za2|
|xa3,ya3,za3|
|xa4,ya4,za4|

et

|xb1,yb1,zb1|
|xb2,yb2,zb2|
|xb3,yb3,zb3|
|xb4,yb4,zb4|

comment je fais pour savoir si il y a collision ou pas?
je pensais faire un test pour chaque point du polygone B pour savoir si il est de l'autre côté du plan défini par le polygone a, mais ça va pas, paske si on est dans ce cas:
___________
|#######|
|#######| POLYGONE A
|#######|
|######|
|#####|
|####|
|###|
|##|
|#|
#
__________
|@@@@@|
|@@@@@| POLYGONE B
|@@@@@|
|@@@@@|
------------

Y
|
Z-X

et que sur le plan Z, le polygone B est derrière le polygone A, ben il est derrière le plan, mais y a pas de collisions, pask'il est en dessous...
et faire un test pour toutes les coditions, ça prendrait bcp trop de temps...
qqun a une idée??
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

7

personne? sad
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

8

Essaie de mater la source de nitro 3D.

9

je pense pas que ça marche pareil, ac la même notion des "polygones"...
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

10

tu peux m'expliquer ce que t'entends par 'polygône à 4 côtés' en 3d??? j'imagine comme tu fais un test de collision que tu veux parler de surface à 4 côtés, sauf que pas de chance c pas tjs inclus dans un plan embarrassed donc précise un peu ta question...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

11

je veux dire des polygones à 4 côtés alignés par rapport à un plan, dc les 4 côtés sur le même plan...
et c dans l'espace, puisque il y a 3 coords x,y,z
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

12

Un polygone à 4 côtés, ça s'appelle un quadrilatère. roll

Une proposition d'algorithme:

1. Si les plans sont strictement parallèles, il n'y a pas collision.
2. Si les plans sont confondus, fais un test de collision dans le plan:
2.1. Si un des coins d'un des quadrilatères est à l'intérieur de l'autre quadrilatère, il y a collision.
2.2. Si un côté d'un des quadrilatères coupe un côté de l'autre quadrilatère (les segments, pas les droites!), il y a collision.
2.3. Si aucun des 2 n'est le cas, il n'y a pas collision.
3. Sinon (les plans ne sont pas parallèles):
3.1. Utilise un repère dans chacun des 2 plans.
3.2. Calcule l'équation de la droite d'intersection des 2 plans et les coordonnées des coins du quadrilatère du plan dans lequel se trouve le repère dans chacun de ces repères.
3.3. Si la droite de contact des plans ne coupe aucun des côtés (segments) d'un des 2 rectangles, il n'y a pas collision.
3.4. La droite intersecte toujours 2 côtés si le quadrilatère est convexe, et 2 ou 4 côtés s'il est concave. On a donc pour chacun des 2 quadrilatères déterminé les 1 ou 2 segments qui correspondent à l'intersection de la droite avec le quadrilatère.
3.5. On définit un repère sur la droite et on convertit les coordonnées des 2-4 segments vers ce repère.
3.6. Si 2 segments issus de 2 quadrilatères différents ont des intervalles en commun, il y a collision, sinon il n'y a pas collision.

Je ne sais pas si cet algorithme est efficace et s'il est sans erreurs.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

13

Kevin-> g oublié de préciser que c des polygones convexes...

mais ce que je voulais, ct surtt des équations pour effectuer ces tests...
par exemple, quand tu dis: calcule l'équation de la droite d'intersection des 2 plans
eh bien, si j'ai les coordonnées de 3 pts de chacun de ces plans, mettons xa1,ya1,za1,xa2,ya2,za2,xa3,ya3,za3 et xb1,yb1,zb1,xb2,yb2,zb2,xb3,yb3,zb3 ,
alors qu'est-ce que je dois faire pr avoir l'équation de la droite de la section de ces 2 plans???
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

14

Tu calcules d'abord l'équation de chacun des 2 plans, soit en passant par le vecteur normal, soit en posant un système.

Puis, pour l'équation de la droite dans chacun des 2 plans, prends par exemple le repère (A1,A2,A3) et convertis l'équation de l'autre plan vers ce repère.
Posons u=vecteur A1A2 et v=vecteur A1A3. On a donc:
xu=xa2-xa1
yu=ya2-ya1
zu=za2-za1
xv=xa3-xa1
yv=ya3-ya1
zv=za3-za1
On peut poser l'équation:
a'(x xu+y xv)+b'(x yu+y yv)+c'(x zu+y zv)+d'=0 (où ax'+by'+c'z+d'=0 est l'équation du plan du quadrilatère B1B2B3B4)
En développant, on obtient une équation de la droite d'intersection des 2 plans dans le repère (A1,A2,A3).
Tu peux faire la même chose dans l'autre sens.

Ensuite, pour obtenir un repère sur cette droite, choisis 2 points O et I de coordonnées respectives (x1,y1) et (x2,y2) qui satisfont l'équation de la droite dans le repère d'un des plans, et tu convertis ces coordonnées d'abord en (x1,y1,z1) et (x2,y2,z2) dans le repère de l'espace, puis en (x1',y1') et (x2',y2') dans le repère de l'autre plan. Tu poses O(0) et I(1) pour cette droite. et les coordonnées de tout point de coordonnées (x,y) dans le premier plan seront ((x-x1)/(x2-x1),(y-y1)/(y2-y1),(z-z1)/(z2-z1)). Même chose dans le deuxième plan.
[edit]Edité par Kevin Kofler le 03-11-2001 à 00:39:22[/edit]
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

15

OK, merci, j'essayerai ça wink
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina