[casse tête mathématique] - Algo - Programmation
Marsh Posté le 14-04-2003 à 18:10:08
ca doit pas se faire en une seule ligne ... Ou alors je ne vois pas la bonne approche du problème ... Je cherche ...
Marsh Posté le 14-04-2003 à 18:14:30
ce que j'ai pondu et qui marche pas c'est ça:
|
Marsh Posté le 14-04-2003 à 18:29:40
--------------------
var boxminx = Math.max(minax,minbx);
var boxmaxx = Math.min(maxax,maxbx);
var boxminy = Math.max(minay,minby);
var boxmaxy = Math.min(maxay,maxby);
var commonarea = (Math.abs(boxmaxx-boxminx)*Math.abs(boxmaxy-boxminy));
--------------------
tu t'es pas trompé pour boxmaxy? moi je verrais plutot un min
Marsh Posté le 14-04-2003 à 18:32:43
yes en effet il ya une condition comme celle ci à vérifier, cas contraire l'aire commune est donc 0, mais j'essaye de trouver une manière courte et élégante en mathématiques qui me résolve mon problème mais j'y arrive po :'(
je vais essye en mettant un min au lieu du max
Marsh Posté le 14-04-2003 à 18:35:55
à part faire un joli paquet de if / else je ne vois pas trop comment faire pour tester si un point d'un rectangle appartient à l'autre ...
Marsh Posté le 14-04-2003 à 18:37:28
kaloskagatos a écrit : -------------------- |
et après tu vérifie que le signe de tes soustractions est bon (les 2 doivent être positif en la faisant dans le bon sens).
tu vires tes abs() aussi.
Si un des signes est négatifs, tu mesures l'aire qui n'est pas comprise entre les 2 (il n'y a pas intersection)
Marsh Posté le 14-04-2003 à 18:40:02
|
Marsh Posté le 14-04-2003 à 18:42:22
kaloskagatos a écrit :
|
J'ai fait Exactement le même schéma sur ma feuille de papier devant mon PC !
Marsh Posté le 14-04-2003 à 19:02:12
bon bin merci à vous tous de m'avoir encouragé à trouver la réponse qui cassait la tête de tout le monde ici
la solution est:
(pour avoir un quotient d'au moins "this.fitarea" )
|
merci messieurs
Marsh Posté le 23-04-2003 à 11:56:01
Je trouve que cette solution est un peu plus élégante (attention, je n'ai pas dit forcément plus performante ou autre ...)
|
Edit : ca te permet aussi de virer les Math.abs ...
Marsh Posté le 24-04-2003 à 00:48:52
S = max(0,min(Xamax,Xbmax)-max(Xamin,Xbmin))*
max(0,min(Yamax,Ybmax)-max(Yamin,Ybmin))
Marsh Posté le 14-04-2003 à 18:04:46
hello les gars, j'ai un casse tête mathématique,
il faut quej e calcule l'aire commune entre deux rectangles, et j'ai:
Rectangle A:
Xamin
Xamax
Yamin
Yamax
Rectangle B:
Xbmin
Xbmax
Ybmin
Ybmax
j'ai besoin d'une toute petit eligne de calcul qui me sorte l'aire commune entre les deux rectangles !!! mais j'ya arrive po ça fait une demie journée que je cherche mais j'ya arrive po à l'aide !!!!!!!!! :'( :'( pitié de mon ignorance et mon illogicité...