2013-05-17 8 views
1
Point 1: 0, 0, 0 
Point 2: 10, 10, 3 

Ce que je dois est de savoir comment obtenir toutes les coordonnées entre les deux points ainsi, par exemple, il serait sortieTrouver toutes les coordonnées entre deux points (en 3d)

0, 0, 0 
0, 0, 1 
0, 0, 2 
0, 0, 3 
0, 1, 0 
0, 1, 1 
0, 1, 2 
0, 1, 3 
1, 0, 0 
1, 1, 0 
1, 0, 1 
1, 1, 1 

ect. ect ... vous obtenez le point .. jusqu'à ce que vous ayez chaque coord entre les deux. En utilisant java kindof alors vraiment tout moyen d'accomplir cela avec les mathématiques m'aider! Comme vous pouvez le voir, ils seront tous des nombres entiers sans décimales, donc il n'y a PAS un nombre infini de points.

+0

Vous ne pouvez pas obtenir chaque point entre 2 points car il y a une quantité infinie de points entre ces 2 points. vous avez besoin d'une sorte de granularité. – Prodigga

+0

Theres pas un nombre infini de points .. C'est un jeu vidéo et il n'y a effectivement pas de nombres décimaux donc seulement des nombres entiers dans les coords. –

Répondre

0

pseudocode:

for (x from p1.x to p2.x) 
    for (y from p1.y to p2.y) 
     for (z from p1.z to p2.z) 
      new_point = (x, y, z) // do what you will with this 

Assurez-vous que lorsque vous convertissez le pseudo-code Java vos for -loops aura des étapes étant soit +1 ou -1 selon que p1 ou p2 a la plus petite coordonnée, vous allez dois rendre cela explicite. Notez cependant que, bien que ces points correspondent à la description de votre problème, ils ne sont pas "entre" p1 et p2. Comme le montre votre exemple, vous obtiendrez un cube dont les deux coins opposés sont les points donnés. Peut-être que c'est ce que tu veux réellement?

Si vous découvrez que vous voulez réellement les points sur ou autour de la ligne entrep1 et p2 alors c'est un problème plus difficile (parce que vous voulez des entiers).

Questions connexes