/* Manipulations sur des spheres et des droites 3D */ public class DistanceSpheres { /* Type agrege de stockage d'une position 3D */ static class Position3D { double x = 0.0; double y = 0.0; double z = 0.0; }; /* Type agrege de stockage d'une sphere 3D */ static class Sphere { double rayon = 1.0; Position3D centre = new Position3D(); }; /* Programme principal */ public static void main(String [] args) { Sphere sp1 = new Sphere(); Sphere sp2 = new Sphere(); double dx; double dy; double dz; double distance; Ecran.afficherln("Premiere sphere"); Ecran.afficher("Rayon ? "); sp1.rayon = Clavier.saisirDouble(); Ecran.afficher("Coordonnee x du centre ? "); sp1.centre.x = Clavier.saisirDouble(); Ecran.afficher("Coordonnee y du centre ? "); sp1.centre.y = Clavier.saisirDouble(); Ecran.afficher("Coordonnee z du centre ? "); sp1.centre.z = Clavier.saisirDouble(); Ecran.afficherln("Deuxieme sphere"); Ecran.afficher("Rayon ? "); sp2.rayon = Clavier.saisirDouble(); Ecran.afficher("Coordonnee x du centre ? "); sp2.centre.x = Clavier.saisirDouble(); Ecran.afficher("Coordonnee y du centre ? "); sp2.centre.y = Clavier.saisirDouble(); Ecran.afficher("Coordonnee z du centre ? "); sp2.centre.z = Clavier.saisirDouble(); dx = sp1.centre.x-sp2.centre.x; dy = sp1.centre.y-sp2.centre.y; dz = sp1.centre.z-sp2.centre.z; distance = Math.sqrt(dx*dx+dy*dy+dz*dz); distance = distance-sp1.rayon-sp2.rayon; if ( distance < 0.0 ) { distance = 0.0; } Ecran.afficher("La distance est ",distance); } }