ШАРЫ 5

#include "stdafx.h" #include <stdio.h> #include <math.h> #include <conio.h> const int M = 10; struct ball // тип вводимых данных о шаре: координаты его центра и радиус { float x; float y; float z; float rad; }; // расстояние между двумя центрами float r0(ball a1, ball a2) { float r; r = sqrt(fabs((a1.x - a2.x)*(a1.x - a2.x) + (a1.y - a2.y)*(a1.y - a2.y) + (a1.z - a2.z)*(a1.z - a2.z))); return (r); } // построение направляющего вектора прямой, содержащей 2 заданные точки ball vect(ball o1, ball o2) { ball e1; float R; R = r0(o1, o2); // нормировка вектора e1.x = (o2.x - o1.x) / R; e1.y = (o2.y - o1.y) / R; e1.z = (o2.z - o1.z) / R; e1.rad = 0; return e1; } void main() { int n,i,j; ball BALLS[M],A1, A2, v0, res; float R, max; printf("n = "); scanf("%i", &n); printf("\n"); max = -1; for ( i = 0; i < n; i++) { scanf_s("%f%f%f%f", &BALLS[i].x, &BALLS[i].y, &BALLS[i].z, &BALLS[i].rad); } for (i = 0; i < n; i++) for (j = 0; j < n; j++) if (BALLS[i].rad + BALLS[j].rad + r0(BALLS[i], BALLS[j]) > max) { max = BALLS[i].rad + BALLS[j].rad + r0(BALLS[i], BALLS[j]); A1 = BALLS[i]; A2 = BALLS[j]; } if (n == 1) printf("RESULT: %.3f %.3f %.3f %.3f\n", BALLS[0].x, BALLS[0].y, BALLS[0].z, BALLS[0].rad); else { R = r0(A1, A2); v0.rad = 0; v0.x = A2.x - A1.x; v0.x = v0.x / R; v0.y = A2.y - A1.y; v0.y = v0.y / R; v0.z = A2.z - A1.z; v0.z = v0.z / R; printf("v0: %.3f %.3f %.3f \n", v0.x, v0.y, v0.z); printf("R: %.3f \n", R); ball v1, v2; v1.x = A1.x + v0.x*A1.rad; v1.y = A1.y + v0.y*A1.rad; v1.z = A1.z + v0.z*A1.rad; if (r0(v1, A2) < R) { v1.x = A1.x - v0.x*A1.rad; v1.y = A1.y - v0.y*A1.rad; v1.z = A1.z - v0.z*A1.rad; }; v2.x = A2.x + v0.x*A2.rad; v2.y = A2.y + v0.y*A2.rad; v2.z = A2.z + v0.z*A2.rad; if (r0(v2, A1) < R) { v2.x = A2.x - v0.x*A2.rad; v2.y = A2.y - v0.y*A2.rad; v2.z = A2.z - v0.z*A2.rad; }; res.rad = r0(v1, v2) / 2; res.x = v1.x + (v2.x - v1.x) / 2; res.y = v1.y + (v2.y - v1.y) / 2; res.z = v1.z + (v2.z - v1.z) / 2; printf("RESULT: %.3f %.3f %.3f %.3f\n", res.x, res.y, res.z, res.rad); } getch(); }

Be the first to comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.