Pozdrawiam
Kod: Zaznacz cały
#include<stdio.h> //printf, scanf
#include<conio.h> //getch
#include<math.h> //sqrt
int main ()
{ int ax, ay, az, bx, by, bz, cx, cy, cz, A, B, C, D;
printf("Podaj wspolrzedne punktu A:
");
printf("Wspolrzedna x: ");
scanf("%d", &ax);
printf("Wspolrzedna y: ");
scanf("%d", &ay);
printf("Wspolrzedna z: ");
scanf("%d", &az);
printf("Podaj wspolrzedne punktu B:
");
printf("Wspolrzedna x: ");
scanf("%d", &bx);
printf("Wspolrzedna y: ");
scanf("%d", &by);
printf("Wspolrzedna z: ");
scanf("%d", &bz);
printf("Podaj wspolrzedne punktu C:
");
printf("Wspolrzedna x: ");
scanf("%d", &cx);
printf("Wspolrzedna y: ");
scanf("%d", &cy);
printf("Wspolrzedna z: ");
scanf("%d", &cz);
A = by*cz - by*az - ay*cz + ay*az - bz*cy + bz*ay + az*cy - az*ay;
B = cx*bz - cx*az - ax*bz + ax*az - cz*bx + cz*ax + az*bx - az*ax;
C = bx*cy - bx*ay - ax*cy + ax*ay - by*cx + by*ax + ay*cx - ay*ax;
D = - ax*by*cz + ax*ay*cz + ax*by*az
- bx*cy*az + ax*cy*az + bx*ay*az
- cx*ay*bz + ax*ay*bz + cx*ay*az
+ az*by*cx - az*ay*cx - az*by*ax
+ bz*cy*ax - az*cy*ax - bz*ay*ax
+ cz*ay*bx - az*ay*bx - cz*ay*ax;
if (A*A > 0 && B*B > 0 && C*C > 0)
{ printf("Plaszczyzna o rownaniu ogolnym:
%dx + %dy + %dz + %d = 0", A, B, C, D);
getch();
return 0;
}
else
{ if (ax != bx | bx != cx | ay != by | by != cy | az != bz | bz != cz)
{ if (A == B && B == C && C == D && D == 0)
{ printf("Punkty te tworza prosta."); //niezawsze 0x + 0y + 0z + 0 = 0...
getch();
return 0;
}
else
{ printf("Punkty te tworza prosta o rownaniu:
%dx + %dy + %dz + %d = 0", A, B, C, D);
getch();
return 0;
}
}
else
{ printf("Podales punkt:
A = (%d, %d, %d)", ax, ay, az);
getch();
return 0;
}
}
return 0;
}
Matematycznie chodzi tu o równanie prostej, kiedy wyznacznik:
\(\displaystyle{ \left|\begin{array}{ccc}x - ax&y - ay&z - az\\bx - ax&by - ay&bz - az\\cx - ax&cy - ay&cz -az\end{array}\right|}\)
niezależnie od parametrów przy \(\displaystyle{ x, y, z}\) i tak jest zerem, zatem w sytuacji, gdy:
\(\displaystyle{ (bx - ax, by - ay, bz - az) = k (cx - ax, cy - ay, cz -az), k \in \mathbb{R}}\).
Również dla przypadku:
\(\displaystyle{ (x - ax, bx - ax, cx - ax) \in lin((y - ay, by - ay, cy - ay),(z - az, bz - az, cz - az))}\).
oraz:
\(\displaystyle{ (y - ay, by - ay, cy - ay) = t(z - az, bz - az, cz - az), t \in \mathbb{R}}\).
Myślę ewentualnie nad równaniem prostej wyznaczanej przez dwa punkty w \(\displaystyle{ \mathbb{R}^3}\), ale nie znalazłem wzoru.
Pozdrawiam.