Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- #define NOL 2E-15
- class line {
- private:
- double qx,qy,qz;
- double x,y,z;
- public:
- line(int);
- line(const line&);
- line(double x=0, double y=0, double z=0, double qx=1, double qy=1, double qz=1);
- void print(void);
- bool online(double, double, double);
- friend bool cross(line,line);
- };
- bool cross(line a, line b) {
- double x1,x2,y1,y2,z1,z2,qx,qy,qz,px,py,pz,A;
- x1=a.x; x2=b.x; px=b.qx; qx=a.qx;
- y1=a.y; y2=b.y; py=b.qy; qy=a.qy;
- z1=a.z; z2=b.z; pz=b.qz; qz=a.qz;
- if(fabs(qx/px-qy/py) < NOL and fabs(qx/px-qz/pz) < NOL) return 0;
- A=qx*(py*(z2-z1)-pz*(y2-y1))-qy*(px*(z2-z1)-pz*(x2-x1))+qz*(px*(y2-y1)-py*(x2-x1));
- return (fabs(A) < NOL) ? 1
- : 0;
- }
- bool line::online(double xx, double yy, double zz) {
- double A,B,C;
- A=(x-xx)/qx;
- B=(y-yy)/qy;
- C=(z-zz)/qz;
- return (fabs(A-B)<NOL && fabs(B-C)<NOL) ? 1
- : 0;
- }
- void line::print(void) {
- printf("\n\nPryamaya: ");
- printf("\nx -%5.2lf y -%5.2lf z -%5.2lf",x,y,z);
- printf("\n---------- = ---------- = ----------");
- printf("\n%7.2lf%13.2lf%13.2lf",qx,qy,qz);
- }
- line::line(int) {
- printf("Vvedite Napravlyaushiy vector x,y,z: ");
- scanf("%lf%lf%lf",&qx,&qy,&qz);
- printf("Vvedite to4ky 4erez kotoryu proxodit pryamaya x,y,z: ");
- scanf("%lf%lf%lf",&x,&y,&z);
- }
- line::line(const line &A) {
- x=A.x;
- y=A.y;
- z=A.z;
- qx=A.qx;
- qy=A.qy;
- qz=A.qz;
- }
- line::line(double xx, double yy, double zz, double qxx, double qyy, double qzz) {
- x=xx;
- y=yy;
- z=zz;
- qx=qxx;
- qy=qyy;
- qz=qzz;
- }
- int main() {
- line a(-2,0,1,2,-3,4);
- line b(3,1,7,3,4,2);
- if(a.online(0,0,0)) printf("YES ON_LINE\n");
- if(cross(a,b)) printf("YES CROSS");
- }
Advertisement
Add Comment
Please, Sign In to add comment